次に、データソースの設定を記述します。[XML]を選択し、[次へ]をクリックします(図10)。そして、「WebContent/WEB-INF」フォルダを選択し、以下のように設定して[次へ]をクリックします(図11)。
[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) )
それでは実行してみましょう。サーバにプロジェクトを追加します。サーバを選択して右クリックして、[プロジェクトの追加および除去]を選択します。
「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アプリケーションへの理解が深まってきた。
しばらくすると、次の新入社員が入ってくるため、先輩風を吹かせる練習中
Copyright © ITmedia, Inc. All Rights Reserved.