読者です 読者をやめる 読者になる 読者になる

山下寛人オフィシャルブログ

オイシックス株式会社 執行役員 システム本部長 山下寛人の公式ブログです。

Jetty8でatomikos設定

なんか手こずってしまいましたがなんとかうまくできました。できてみれば実に簡単でした。

Jetty8
JavaSE6
atomikos3.9.3

いろいろ他にも違う設定ができそうですが一設定例として。

必要なjarをjettyのホームディレクトリ下のlib/extに配置
transactions-3.9.3.jar
transactions-api-3.9.3.jar
transactions-hibernate3-3.9.3.jar
transactions-jta-3.9.3.jar
atomikos-util-3.9.3.jar
おそらく他にも依存jarあると思われますがどれかわからなくなりました。maven repositoryに入っているのでmavenやgradleで入れるほうがよいかもしれません。

start.ini
OPTIONS=にjtaを追加。以下のようになります。
OPTIONS=Server,jsp,jmx,resources,websocket,ext,plus,annotations,jta
これはlib/jtaの下にJTAのインターフェースだけのjarが入っているのでそれを利用するための設定です。

etc/jetty.xml
<configure>タグの中に以下を追加

<New id="tx" class="org.eclipse.jetty.plus.jndi.Transaction">
     <Arg>
     <New class="com.atomikos.icatch.jta.UserTransactionImp"/>
   </Arg>
</New>

これでプログラムから

Context context = new InitialContext();
UserTransaction transaction = (UserTransaction) context.lookup("/UserTransaction");
といった具合に使えるようになります。
コミットやロールバックがちゃんとできるかまではまだ未確認ですがここまでできれば多分できるのではないかと思われます。

codehausというサイトにいろんなドキュメントなどあったみたいなのですがサイトがつい最近終了してしまったようでそれも手こずってしまった1つの要因です。