株式会社ラクス  ITエンジニア総合支援サイト スタックアスタリスク フルマネージド専用サーバー エクスユニット
ITエンジニアとして 知る 学ぶ
 
Java
.NET
PHP
プログラミング一般
DataBase
システム/サーバ構築
システム/サーバ運用
技術系一般知識
そのまま使えるシリーズ
J2EE TIPS
 
The Apache Ant Project
Sun MicroSystems
The Apache Jakarta Project
Caucho Technology
eclipse.org
>IT技術情報>Java>JTAを使ったトランザクション管理第1回:前編
【連載 】JTAを使ったトランザクション管理

第1回:前編

 
DAO(Data Access Object)パターンを実装するときに、トランザクションの管理方法について悩んだことはありませんか?
DAOの各メソッド内部でトランザクションを管理すると、いくつかのメソッドにまたがるようなトランザクションの制御ができません。
逆に、メソッドの外部でトランザクション制御をしようとすると、JDBCをDAOの外部で使用する必要があったり、ConnectionをDAOに渡してやるような操作が必要になったりして、カプセル化がうまく図れません。
こういった問題の解決方法の一つがJTA(Java Transaction API)を使ったトランザクション管理です。 JTAを用いることによって、より平易に、かつより高度にトランザクション管理を行うことができます。
本稿では、Tomcat5でのJTAセットアップ方法(前編)と、DAOパターンによる実際のプログラムの書き方(後編)について説明します。

松嶋祥文
株式会社アイティーブースト
2004/9/13
 

【 目次 】
1.はじめに
2.JTA とは?
3.JTA の実装
4.Tomcat5 での JTAのセットアップ方法
5.JTA実装「JOTM」のダウンロード
6.インストール
7.設定ファイルの記述(server.xml)
8.設定ファイルの記述(web.xml)
9.JTAを使ったコーディング例
10.次回は。。。

【実行環境】
Tomcat5
JOTM-1.5.3
PostgreSQL 7.4

1.はじめに

 DAO(Data Access Object)パターンを実装するときに、トランザクション管理方法について悩んだことはありませんか?DAOの各メソッド内部でトランザクション管理すると、いくつかのメソッドにまたがるようなトランザクションの制御ができません。逆に、メソッドの外部でトランザクション制御をしようとすると、JDBCをDAOの外部で使用する必要があったり、ConnectionをDAOに渡してやるような操作が必要になったりして、カプセル化/処理の分離をうまく図ることができません。
 こういった問題の解決方法の一つがJTA(Java Transaction API)を使ったトランザクション管理です。JTAを用いることによって、より簡単に、かつより高度にトランザクション管理を行うことができます。
 本稿では、Tomcat5でのJTAセットアップ方法(前編)と、DAOパターンによる実際のプログラムの書き方(後編)について説明します。

2.JTA とは?

 ソフトウェアを構築する際、一連の処理の塊を「不可分なもの(分離できないもの)」として扱うために、トランザクションという考え方があります。ここでいう一連の処理とは、例えば「(1)Aさんの口座から出金して、(2)Bさんの口座にその金額分を入金する」というような、複数の処理の連続を指します。
 この例の2つの処理はAさんの口座からBさんの口座にお金を移すための処理ですが、(1)と(2)のどちらかが完了しただけでは全体の処理は完了となりません。あくまで2つの処理が両方とも正しく終了した場合にのみ、本来の目的を果たすことができます。
 逆に、片方だけ処理が行われて、(エラーの発生や処理途中の停電などによって)もう片方は処理されないようなことになると、お金が消えてしまったり、増えたりしてしまいます。

 このように、片方だけ処理が成功するという状態をなくすため、トランザクションという考え方を導入し、一連の処理を不可分なものにします。つまり、トランザクション管理を行い、一連の処理が不可分なものになっている場合、全部が成功するか、全部が失敗するか、その二つの状態しか存在しなくなります。

 JTA(Java Transaction API)は、J2EE にて規定されている、トランザクション管理するための API です。トランザクション管理の対象には、データベースだけでなく、トランザクション処理が必要な各種アプリケーションや、J2EEサーバ自体をも含むことができます。

 JTAを用いてトランザクション管理を行うことによって、以下のような特徴を持つアプリケーションの開発が可能になります。

  • Javaプログラムでトランザクション管理を行うことができる
  • 複数のシステム/リソースにまたがるようなトランザクション管理できる
  • 特定の環境に依存しない(標準的な仕様であるJTAを使用するので)

本稿では、データベース(PostgreSQL)を対象に、JTAトランザクション管理する具体的な方法をご紹介いたします。
コンテナにはTomcat5を使用します。

3.JTAの実装

JTAトランザクションを扱うためにJ2EEで規定された一連のインタフェースです。
 あくまでインタフェースですので、具体的な実装は各ベンダに任されています。J2EEアプリケーションサーバがJTAの実装を持つ場合もありますし、JTAの実装のみが配布されている場合もあります。

 本稿ではTomcat5を対象に執筆していますが、Tomcat5はJTAの実装を持ちません。ですから、objectweb で配布されているフリーの JTA 実装であるJOTM(http://JOTM.objectweb.org/)を利用します。

※ なお、商用のアプリケーションサーバの多くは、それ自体でJTA実装を持っています。


▼Java や Linux を体系的に学びましょう!▼
Stack*のラクスが、
新学習方式のカリキュラムを開発しました!
14700円から(*1)、Java や Linux を体系的に学べます!!
(*1 テキスト代のみの税込料金です)




4.Tomcat5 での JTAのセットアップ方法

 前述したとおりTomcat5 はJTAの実装を持っていませんので、別途インストールする必要があります。ここでは、Tomcat5へのJTAのインストールとセットアップの方法を説明します。
 なお、Tomcat5 自体のインストールは完了しているものとします。

5.JTA実装「JOTM」のダウンロード

 http://forge.objectweb.org/projects/jotm/ から JOTM の最新版(執筆時の最新版は1.5.3)をダウンロードします。
 ソースは必要ありませんので、JOTM-x.x.x.tgz をダウンロードしてください(x.x.xはバージョン番号)。

 tar と gz 形式でアーカイブ化されていますので、それを解凍できるアプリケーション(Lhacaなど)で解凍します。

6.インストール

 解凍すると、いくつかのファイルがありますが、とりあえず必要なものは lib フォルダ以下に入っているものだけです。libフォルダ以下の全てのjarファイルを、以下のいずれかの場所にコピーしてください。

  1. Tomcatホームディレクトリ/common/lib/
  2. Webアプリケーションルートディレクトリ/WEB-INF/lib/

1.にコピーした場合は、そのサーバの全てのWebアプリケーションでJTAを使用することができます。
2.にコピーした場合は、そのWebアプリケーションからのみJTAを使用することができます。

 また、使用するJDBCドライバも、同じフォルダにコピーしてください。本稿では、PostgreSQLのJDBCドライバを使用するとします。

>>次のページへ

【 ページ 】 | 1 | 2 |


サイト内全文検索
スタックアスタリスクのサイトを検索します。検索には、Googleを利用しています。そのため、最新の情報で検索されない可能性があります。


簡単レンタルメールフォーム
300メガ1000円〜 XBitのレンタルサーバー
500メガ1995円〜 電話サポート/PostgreSQL/専用SSLなどにも対応!お客様のニーズを網羅したレンタルサーバ
ホームページ制作のアシストウェブ
STACK* 執筆の講師陣から習得する!! ITエンジニアスクール アイティブースト
統合メールサポートシステム 〜MailDealer(メールディーラー)〜
システム開発,IT教育 〜株式会社アイティーブースト(ITBoost)〜
簡単 営業支援/顧客管理ツール Easy Sales
  利用規約 お問い合わせ・ご意見 スタックアスタリスクについて 運営会社について 
  レンタルサーバー ホスティング 専用サーバー メールフォーム ショッピングカート メール共有 ITエンジニア派遣 Linux講座 Java講座 メール配信 レンタルサーバー Webデータベース 検索サービス
CopyrightcRAKUS Co.,Ltd. All Rights Reserved.  メール管理・共有 顧客管理(CRM)もできるメール対応サポートシステム JAVA LINUX CISCO 技術者派遣 育成事業 株式会社ラクス