3.6 サード・パーティ製品とのUCP統合
ミドルウェア・プラットフォームやフレームワークなどのサード・パーティ製品では、UCPを使用してアプリケーションおよびサービスに接続プーリング機能を提供できます。UCP統合には、スタンドアロン・アプリケーションで使用できるものと同じ接続プール機能があり、Oracle Databaseとの緊密な統合を提供します。
2つのデータソース・クラスPoolDataSourceImpl
(非XA接続プール用)とPoolXADataSourceImpl
(XA接続プール用)が、UCPとの統合点として使用できます。どちらのクラスもoracle.ucp.jdbc
パッケージにあります。これらのクラスは、それぞれPoolDataSource
インタフェースおよびPoolXADataSource
インタフェースの実装で、デフォルトのコンストラクタがあります。
関連項目:
実装クラスの詳細は、Oracle Universal Connection Pool Java APIリファレンスを参照してください。
これらの実装では、接続プール・インスタンスを明示的に作成し、接続を返すことができます。次に例を示します。
PoolXADataSource pds = new PoolXADataSourceImpl(); pds.setConnectionFactoryClassName("oracle.jdbc.xa.client.OracleXADataSource"); pds.setURL("jdbc:oracle:thin:@//localhost:1521/XE"); pds.setUser("user"); pds.setPassword("password"); XAConnection conn = pds.getXAConnection();
サード・パーティ製品では、これらのデータソース実装クラスをインスタンス化できます。また、これらのインタフェースのメソッドは、JavaBean設計パターンに準拠しているため、リフレクションを使用して接続プールのプロパティをクラスに設定するために使用できます。たとえば、Oracle JDBCコネクション・ファクトリおよびデータベースを使用するUCPデータソースは、次のように定義して、JNDIレジストリにロードできます。
<data-sources> <data-source name="UCPDataSource" jndi-name="jdbc/UCP_DS" data-source-class="oracle.ucp.jdbc.PoolDataSourceImpl"> <property name="ConnectionFactoryClassName" value="oracle.jdbc.pool.OracleDataSource"/> <property name="URL" value="jdbc:oracle:thin:@//localhost:1521:oracle"/> <property name="User" value"user"/> <property name="Password" value="password"/> <property name="ConnectionPoolName" value="MyPool"/> <property name="MinPoolSize" value="5"/> <property name="MaxPoolSize" value="50"/> </data-source> </data-sources>
リフレクションを使用する場合、name属性はプロパティの設定に使用されるsetterメソッドの名前(大/小文字を区別)と一致します。つまり、次のようにして、アプリケーションでデータソースを使用できます。
Connection connection = null; try { InitialContext context = new InitialContext(); DataSource ds = (DataSource) context.lookup( "jdbc/UCP_DS" ); connection = ds.getConnection(); ...