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();
...