« 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値の読込 »

Java」カテゴリの記事

DB」カテゴリの記事

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


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

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