悲観もあれば楽観もある「トランザクション」の常識:企業システムの常識をJBossで身につける(8)(4/4 ページ)
企業向けアプリケーションのさまざまな“常識”をJavaのオープンソース・フレームワーク群である「JBoss」から学んでいきましょう。企業システムを構築するうえでの基礎となる知識をリファレンス感覚で説明していきます。初心者から中堅、ベテランまで大歓迎!
データソースの設定を記述
次に、データソースの設定を記述します。[XML]を選択し、[次へ]をクリックします(図10)。そして、「WebContent/WEB-INF」フォルダを選択し、以下のように設定して[次へ]をクリックします(図11)。
- [フォルダ]sampleJTA/WebContent/WEB-INF
- [ファイル名]sampleJTA-ds.xml
[DTDファイルからXMLファイルを作成]を選択し、[次へ]をクリックします(図12)。そして、[XMLカタログ・エントリーの選択]を選択し、「jboss-ds_1_5.dtd」を選び、[次へ]をクリックします(図13)。
特に変更はないので、そのまま[完了]をクリックします。
作成されたsampleJTA-ds.xmlに下記の記述を追加します(サンプルでは、Oracleデータベースを使用していますが、必要に応じて赤枠内をお使いのDB環境設定に修正してください)。
このサンプルは分散環境ではないため、データソースを1つしか設定していないので、ローカルトランザクションでも処理可能です(その場合は、JTAを使う必要はありません)。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE datasources PUBLIC "-//JBoss//DTD JBOSS JCA Config 1.5//EN" "http://www.jboss.org/j2ee/dtd/jboss-ds_1_5.dtd"> <datasources> <local-tx-datasource> <jndi-name>sampleJTADatasource</jndi-name> <connection-url>jdbc:oracle:thin:@localhost:1521:XE</connection-url> <driver-class>oracle.jdbc.driver.OracleDriver</driver-class> <user-name>scott</user-name> <password>tiger</password> </local-tx-datasource> </datasources>
テーブルを作成
データベースには、下記のSQLを実行して、テーブルを作成してください。
CREATE TABLE ITEM ( ITEM_ID NUMBER(14,0) PRIMARY KEY, ITEM_NAME VARCHAR2(20) )
CREATE TABLE ITEM ( ITEM_ID NUMBER(14,0) PRIMARY KEY, ITEM_NAME VARCHAR2(20) )
JBoss Transactionsサンプルアプリの実行
それでは実行してみましょう。サーバにプロジェクトを追加します。サーバを選択して右クリックして、[プロジェクトの追加および除去]を選択します。
「sampleJTA」を選択して[追加]ボタンを押し、[完了]ボタンをクリックします。
最後に、サーバを開始して、Webブラウザから「http://localhost:8080/sampleJTA/SampleServlet」にアクセスしてみてください。処理時間が表示されたらデータベースを確認してみてください。トランザクションが成功し、データが保存されているはずです。
次に、トランザクションを失敗させてみましょう。2つあるINSERT処理のうち、最初のSQLのデータをデータベースから消してください(コード6)。その後、再び上記のURLを再表示してみてください。
DELETE FROM ITEM WHERE ITEM_ID = 1; commit;
先ほどと同じくITEMテーブルにはデータがない状態です。そのため、最初のINSERT処理は成功しますが、2つ目のINSERT処理は先ほど登録されたデータが存在するため一意制約違反でエラーになります。しかし、トランザクションでロールバックされ、どちらのテーブルにも新しいデータは登録されていないはずです。
フレームワークに頼りすぎずに
以上、今回の連載ではトランザクションについて説明しました。
フレームワークなどを使用すると、あまりトランザクションを意識しないでもシステム開発を進めることができる場合もありますが、必ずどのプロジェクトでもフレームワークを使用しているわけではありません。
ここでの内容を知っておくことでデータベースやシステム開発に対する理解が深まると思います。読者の皆さんがシステム構築を行う際の助けになればと思います。
筆者紹介
株式会社ビーブレイクシステムズ技術担当取締役。
上川 伸彦(かみかわ のぶひこ)
RDB製品の開発、各種業界団体におけるXML/EDI標準の策定やSOA基盤の設計などに従事。最近は、ITコンサル業よりも、業務システムの構築に携わることが多く、お客さまからの無理難題と向き合う日々を送っている。
筆者紹介
2008年4月、株式会社ビーブレイクシステムズに入社。
出島 宣寿(でじま のりひさ)
専門分野:Webシステム開発・保守
入社以来、業務システムの開発・保守に従事し、購買業務に関しては、すでにスペシャリストの領域。社内では新入社員の研修を担当し、後輩社員から頼られる存在。
筆者紹介
2009年より、株式会社ビーブレイクシステムズに在籍
原田 壮士(はらだ そうし)
就職活動時にビーブレイクシステムズの説明会でJavaの世界に感銘を受け、入社を決意する。最近ようやく社会人としての生活にも慣れ、仕事面でもJavaやWebアプリケーションへの理解が深まってきた。
しばらくすると、次の新入社員が入ってくるため、先輩風を吹かせる練習中
- 急速なビジネスの変化に対応できる「BRMS」の常識
- 「全体を見る」ためのビジネスプロセス・BPMの常識
- 内部統制に効く! ID管理・シングルサインオンの常識
- 社内システムのセキュリティとアクセス制御の常識
- 悲観もあれば楽観もある「トランザクション」の常識
- クラウドで再注目の「分散コンピューティング」の常識
- いまさら聞けない「Webサービス」の常識
- 非同期処理と疎結合ができる「メッセージング」の常識
- 企業でも情報整理で利用が進む「ポータル」の常識
- DI(依存性の注入)×AOP(アスペクト指向)の常識
- “全部入り”のEclipseで学ぶ統合開発環境の常識
- 企業向けアプリの常識を学び、JBossの環境構築
Copyright © ITmedia, Inc. All Rights Reserved.