2013年6月15日土曜日

Tomcat7にJOTMのインストール手順

複数のデータベースをTomcatで管理したくて、色々調べてみました。
そもそもTomcatはJTAを実装していません。
なので、実装するにはJTAのライブラリを別途インストールすることになります。
調べた結果JOTMというオープンソースのライブラリを使うことにより、実装できる事がわかりました。

前提条件

  • JOTM 2.1.9
  • Tomcat 7
  • Java 1.7.XX
  • Windows XP 32bit
  • Oracle10gR2
  • MySQL 5.5

JOTMインストール手順

こちらの【u6kの日記】さんのサイトを参考に、設定しました。

Tomcatのダウンロード

Apache Tomcatをダウンロードし、インストールします。

JOTMのダウンロード

JOTMをダウンロードし、展開したらlibフォルダの中身を全て${TOMCAT_HOME}\libフォルダに入れます。

Server.xmlの修正

以下のようにServer.xmlもしくはcontext.xmlを変更します。

<Resource name="jdbc/JNDI" auth="Container" type="javax.sql.DataSource"
 
               factory="org.objectweb.jotm.datasource.DataSourceFactory"       
               maxActive="5" maxIdle="30" maxWait="10000"       

               username="hoge" password="hoge" 

               driverClassName="com.mysql.jdbc.Driver"
               url="jdbc:mysql://localhost:3306/hoge"/>

  <Resource name="UserTransaction" 
           
                 auth="Container"
     
            type="javax.transaction.UserTransaction" />
  <Transaction factory="org.objectweb.jotm.UserTransactionFactory"
     
               jotm.timeout="60" />

実行結果

確かにJTAの2相コミットのロールバック・コミットは出来ました・・・・

が、

jmeterで負荷テスト(1秒間に100回コネクションを取得)を実施したところ、コネクション取得エラーが多発しました。
どうやら同タイミングでコネクションを取得しに行くと、エラーが発生するらしいです。
エラーが発生したら再度取得するような変更をしてみたのですが、あまり美しくないので結局JOTMを使うのを辞め、JBossに変更しました。JOTMの開発も止まっているみたいですしね・・・
そうしたら同様のテストをしても正しく取得でき2層コミットも正常に実行出来ました。
原因は、Tomcatのバージョンだったのか、JOTMのバグだったのか、Java 1.7を使ったせいなのか分かりませんが、JOTMのサポートも止まっているようなので、今後の事を考えるならば素直にJTAを正式に実装している JavaEEを実装したアプリケーションサーバを使うほうが無難かもしれません。
JBossはTomcatベースで作られているので移行は簡単です。

Written By : // 12:32
Category:

0 コメント:

コメントを投稿

 

About

このブログは筆者の備忘録として色々記載しています。

Blog Archive

Powered by Blogger.