S2JCA 0.2.0 リリース

変更内容

当初 M2 (0.2.x) で予定していた JMS 用リソースアダプタの実装は先日 [提案] した S2JMS として開発することになりました.
そのため,M3 (0.3.x) および M4 (0.4.x) として予定していた RAR のサポートをM2 (0.2.x) として前倒しで実装しました.
くわしくはこちら

ダウンロード

以下からダウンロードすることができます.
http://s2jca.oscj.net/servlets/ProjectDocumentList?folderID=22&expandFolder=22&folderID=17

雑感

RAR のサポートに伴い,dicon ファイルの中にコネクションマネージャの実装クラスを記述する必要がなくなり,ちょっとすっきりした感じ.
0.1.0 ではリソースが XA をサポートするかどうかによって,dicon ファイル中にコネクションプールの Policy を書き分けないといけなかったのですが,それもリソースアダプタの META-INF/ra.xml から自動的に判断できるようになりました.
ちなみに,リソースアダプタから取得したコネクションを JTA トランザクションに自動的に参加させたくない場合は,

    <component name="mcfDeployer"
        class="org.seasar.jca.asf.deploy.impl.ManagedConnectionFactoryDeployerImpl"
    >
        <property name="managedTx">false</property>
        ・・・
    </component>

と,managedTx プロパティを false にすれば OK.デフォルトは true です.true の場合,JTA トランザクションが開始されていないのにコネクションを取得しようとすると例外を吹っ飛ばします.


ちなみに RAR ファイルというのは WAR なんかと同じく JAR ファイルの一種で,その中には JDBC ドライバや JMS プロバイダなどの JAR ファイルを含むことができます.このような JAR の中の JAR を URLClassLoader に扱わせる一般的なやり方が分からなかったので,JAR の中の JAR を参照する URL を勝手に作っちゃいました.rar:〜 とか ear:〜 とか.
一応うまく動いているようですが,同じようなことをやるアプリとは共存できない感じでちょっとイマイチ.
どうするのが一般的なんでしょうね?


最後に懺悔.
今回のリリースには RAR サポート関係の単体テストが含まれていません... 心より恥じる.
うー,うまく書けないんだよぉ.
コネクションマネージャ周りは EasyMock のおかげもあって,結構いい感じでテストケースが書けたと思うのですが,コネクションマネージャって JCA で規定されたとおりにリソースアダプタが提供するインタフェースとインタラクションするだけだからよかったんですよね.
一方 RAR サポートの方は RAR ファイルやそれを展開したディレクトリといったリソースのアクセスや上に書いたような ClassLoader 絡みの実装があって,どうテストを書いていいものか悩みまくり.
んで,今回のリリースには単体テストを含めませんでした.一応,S2JCA-ActiveMQS2JCA-JDBC結合テストは入ってますが...
もうちょっとテストを勉強して 0.2.1 とかにはちゃんとした単体テスト一式を含めたいな,と.Tomcat とか JBoss とかのテストケースを参考にすればいいのかなぁ?
まずは積ん読になってるこいつをチェックするか.

JUnit Recipes: Practical Methods for Programmer Testing

JUnit Recipes: Practical Methods for Programmer Testing