« ATOK2009届いた | Main | copyでNULL値の読込 »

2009.02.08

JOTMを用いてTwo Phase Commit

 久しぶりにTwo Phase Commitが必要となるアプリケーションの開発を行うことに。前回の開発時はIBM WebSphere Appication Serverの環境下だったので、普通に(?)lookupで処理を行うことができました。しかしながら、今回はJavaアプリケーションにおいてもTwo Phase Commitが必要になってくるので、J2EEコンテナが必要というような方法は使用できず。

 S2JTAという選択肢も考えたのですが、諸事情により今回は見送り(S2JTAは「Java EEアプリケーション・サーバーに依存しない実装」も提供されているとのことですが、これはスタンドアローンアプリでも使用できるってことなんでしょうかね??)。

 Samples for Connection Pooling and Distributed TransactionsXA with Two-Phase Commit Operation--XA4.javaのような感じで、XAResourceなどを使用して自前で処理を記述するという方法もありますが、ソースの記述量が若干増えてしまうのが難点。

 で、試してみたのがJOTMライセンスはBSD-style)。2.0.10がリリースされたのが2005/05で、それ以降のバージョンが見あたらないのが気になるところではありますが・・・。必要となるライブラリは若干多め。とりあえず、jotm.jar / jta-spec1_0_1.jar / jts1_0.jar / ow_carol.jar / connector-1.5.jar / howl.jar / xapool.jar / jotm_jrmp_stubs.jar / commons-logging.jar / log4j.jar が必要でした。

※上手く動かない場合、ClassNotFoundが発生した場合はわかりやすいかと。"enlistResource: could not create subcoordinator"の例外が発生した場合、クラスパスに jotm_jrmp_stubs.jar が含まれていないことが原因となります。

 JDBC exampleが、JavaアプリでUserTransationを使用する場合のサンプルとなります(これによると、Contextに明示的にUserTransactionをバインドするということもできるようですね)。

 注意点としては、「TMService#stop();を実行しないと、スレッドが残りっぱなしになりアプリケーションが終了しない」ってところでしょうか。

|

« ATOK2009届いた | Main | copyでNULL値の読込 »

DB」カテゴリの記事

Java」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/3959/43995098

Listed below are links to weblogs that reference JOTMを用いてTwo Phase Commit:

« ATOK2009届いた | Main | copyでNULL値の読込 »