8.2. JCA の使用についての概要
JCA は、ドライバーとアプリケーションサーバーとの間の双方向通信を追加して、データベース ドライバー の概念を一般化します。ドライバーは、javax.resource.spi.ResourceAdapter
で表される リソースアダプター になります。
以下の 2 つの重要なインターフェイスがあります。
-
javax.resource.spi.ManagedConnectionFactory
implemented by a resource adapter. -
アプリケーションサーバーで実装される
javax.resource.spi.ConnectionManager
ManagedConnectionFactory
インターフェイスには 2 つの目的があります。
Object createConnectionFactory(ConnectionManager cxManager)
メソッドは、アプリケーションコードが使用できる指定の EIS (またはデータベースまたはメッセージブローカー) の 接続ファクトリー を生成するために使用できます。返されたオブジェクトメソッド
-
汎用
javax.resource.cci.ConnectionFactory
(詳細は JCA 1.6, chapter 17: Common Client Interfaceを参照) -
よく知られている
javax.sql.DataSource
またはjavax.jms.ConnectionFactory
などの EIS 固有の接続ファクトリー。これは、pax-transx-jdbc
およびpax-transx-jms
バンドルによって使用される 接続ファクトリー のタイプです。
-
汎用
-
アプリケーションサーバー によって使用される
javax.resource.spi.ManagedConnection ManagedConnectionFactory.createManagedConnection()
メソッドでは、EIS/database/broker への実際の物理接続を作成します。
ConnectionManager
は アプリケーションサーバー によって実装され、リソースアダプター によって使用されます。これは、最初に QoS 操作 (プーリング、セキュリティー、トランザクション管理) を実行し、最終的に リソースアダプター の ManagedConnectionFactory
に委譲して ManagedConnection
インスタンスを作成する アプリケーションサーバー です。フローは以下のようになります。
-
アプリケーションコードは、
ManagedConnectionFactory.createConnectionFactory()
から返されるオブジェクトを使用して アプリケーションサーバー で作成され、公開される 接続ファクトリー を使用します。これは一般的な CCI インターフェイス (例:javax.sql.DataSource
) である可能性があります。 -
この 接続ファクトリー は、独自の接続で 接続 を作成しません。代わりに、リソースアダプター固有の
ManagedConnectionFactory
を渡すConnectionManager.allocateConnection()
に委譲します。 -
アプリケーションサーバー によって実装される
ConnectionManager
は、サポートするオブジェクト の作成、トランザクションプーリングの管理などを行い、最終的に渡されたManagedConnectionFactory
から 物理 (管理) 接続 を取得します。 - アプリケーションコードは、通常、リソースアダプターの特定の 物理接続 に委譲する アプリケーションサーバー によって作成されるラッパー/プロキシーであるコネクション を取得します。
以下は、アプリケーションサーバー が EIS 固有の EIS 接続ファクトリー以外の 接続ファクトリー を作成した図です。EIS (ここではデータベース) へのアクセスは javax.sql.DataSource
インターフェイスを使用して行われます。ドライバーのタスクは 物理接続を提供することで、アプリケーションサーバー はプーリング/登録/セキュリティーを行うプロキシー (通常) 内でラップします。