Spring 1.2 の JCA サポートと S2JCA

この二つは全然違います.
JCA ってのは J2EE 仕様の一部だけに

Application
Application ServerResource Adapter

という 3 つの要素から構成されています.
リソースアダプタというのは JDBC ドライバとか JMS プロバイダのようなものですが,単なるドライバじゃなくてアプリケーションサーバにデプロイできるという特徴があります.そのリソースアダプタとアプリケーションサーバとの間のインタフェースが SPI (Service Provider Interface).
一方,アプリケーションとリソースアダプタの間は任意のインタフェースを使うことができることになっています.その中にはお馴染みの JDBC や JMS も含まれますが,リソースアダプタ独自の API を提供しても構わないことになっています.とはいってもありがちなインタフェースってのがあるだろうということで,CCI (Common Client Interface) というものが規定されています.ちょっと見た感じ,JDBC を再定義したみたいな雰囲気があります.


S2JCA は上記のうち,SPI を実装しています.今日リリースした 0.1.0 では SPI の左側,アプリケーションサーバが提供すべきコネクションマネージャを実装しました.0.2.x ではその右側,JMS プロバイダをラップするリソースアダプタを提供する予定です.
一方,Spring 1.2 の JCA サポートはアプリケーションから CCI を使うためのもので,いつものように CciTemplate (笑) とか CciLocalTransactionManager (笑) が提供されています.
このように扱う範囲が違うので,両者を組み合わせて使うこともできるかも (爆笑).とはいっても,CCI を提供しているリソースアダプタを使う機会があるのか疑問ですが.
ちなみに S2JCA はなんたって S2 の一員ですから JTA の存在を前提にしています.0.1.0 のコネクションマネージャはきっちり JTA と連携します.リソースアダプタが LocalTransaction しかサポートしなくてもそれをラップする (XA をエミュレートする) XAResource を提供するため JTA のグローバルトランザクションに参加することができるのです.このため,CciLocalTransactionManager のようなものは必要ありません.
っていうか,Spring っていくつのほげほげ TransactionManager を提供しているのでしょうか? (^^;


ところで,S2JCA-ActiveMQ には Spring がバンドルされています.だって ActiveMQ が必要としてるんだもん.S2 関連プロジェクトで初の快挙? (^^;
ともあれ (JW),S2JCA では ActiveMQHSQLDB のようにテスト環境で使うつもりだったのですが,JAR ファイル一つの軽量な HSQLDB と違って ActiveMQ って結構でかいのが難点.実行環境とリソースアダプタとで実質 2 セット含まれていることもあって,S2JCA-ActiveMQ は 5MB 近いサイズになっちゃってます.
そんなわけで (どんなわけで?),ActiveMQ をやめてもっと軽量な JMS 実装に変更しようかと.おすすめの実装などあれば情報ください.m(__)m