[J2EE][Seasar] JCA

S2JCAのおかげでJCAがおぼろげながら見えてきた!自分の中での理解のポイントはConnectionManager。以下メモ。

アプリケーションサーバは、アプリケーションサーバ提供のConnectionManagerを知っているようなConnectionFactory(JDBCでいうところのDataSource)をクライアントに公開する。すると、クライアントがConnectionFactoryに対してConnectionを要求した場合に、アプリケーションサーバはConnectionManagerを介してトランザクション制御やプーリングやセキュリティといった処理を割り込ませることができる。
スタンドアロンの場合、ConnectionFactoryはデフォルトのConnectionManagerを使う。このときは当然、トランザクションやプーリングやセキュリティといった処理は行われない。でもS2JCAを使えばアプリケーションサーバがなくても同等のことができる。S2JCAは任意のトランザクションマネジャーやプーリング実装と連携できるConnectionManagerを提供してくれる。クライアントにはこのConnectionManagerを知っているConnectionFactoryを使ってもらえばいい。
ConnectionManagerはどれも結局はManagedConnectionFactoryやらManagedConnectionを呼び出すけど、それらを呼び出す過程でいろんな処理をはさんだり何もしなかったりと制御できるところがJCAのいいところ。サーバ側はシンプルになっていろんなリソースアダプタが差し込める。