2 スタート・ガイド
この章の内容は次のとおりです。
2.1 UCPを使用するための要件
-
JDBCドライバまたは
java.sql.Connection
オブジェクトおよびjavax.sql.XAConnection
オブジェクトを戻すことができるコネクション・ファクトリ・クラス -
ucp.jar
ライブラリ(アプリケーションのクラスパスに指定) -
ojdbc8.jar
ライブラリ(アプリケーションのクラスパスに指定)注意:
サード・パーティのデータベースおよびドライバとともにUCPを使用する場合でも、Oracle
ojdbc8.jar
ライブラリを使用する必要があります(UCPがこのライブラリに依存しているため)。 -
SQL対応のデータベース。Oracle RACや高速接続フェイルオーバーなどの拡張機能には、Oracle Databaseが必要です。
2.2 UCPでの基本的な接続の手順
UCPには、UCP JDBC接続プールから接続を流用するためにアプリケーションで使用されるプール対応のデータソースが用意されています。最も基本的な使用例では、接続プールは明示的に定義されません。かわりに、接続が流用される際に、デフォルトの接続プールが暗黙的に作成されます。
次の手順では、データベースにアクセスするために、UCPプール対応のデータソースから接続を取得する方法について説明します。完全な例を例2-1に示します。
2.3 UCP APIの概要
次の項では、UCP APIの最も一般的に使用されるパッケージの簡単な概要について説明します。
関連項目:
APIの詳細は、『Oracle Universal Connection Pool Java API Reference』を参照してください。
oracle.ucp.jdbc
このパッケージには、JDBC接続および接続プールを使用して処理を実行するためにアプリケーションで使用される様々なインタフェースおよびクラスが含まれます。このパッケージに含まれるインタフェースの中でPoolDataSource
およびPoolXADataSource
データソース・インタフェースが、接続の取得と接続プールのプロパティの取得および設定のために使用されます。これら2つのインタフェースを実装するデータソース・インスタンスは、接続プールを自動的に作成します。
oracle.ucp.admin
このパッケージには、接続プール・マネージャを使用するためのインタフェースが含まれます。また、ユーザーがJMX操作を使用し、接続プールと接続プール・マネージャの操作および属性にアクセスできるようにするMBeanを使用するためのインタフェースも含まれます。インタフェースの中でも、UniversalConnectionPoolManager
インタフェースが、接続プール・インスタンスを作成およびメンテナンスするためのメソッドを提供します。
oracle.ucp
このパッケージには、接続プール機能の実装に使用される必須および任意のコールバック・インタフェースが含まれます。たとえば、ConnectionAffinityCallback
インタフェースは、接続アフィニティを有効または無効にするコールバックの作成に使用されますが、接続アフィニティの動作のカスタマイズにも使用できます。また、このパッケージには、統計クラス、UCP固有の例外クラス、およびデータソースを使用しないでUCPを直接使用するためのロジックも含まれます。
2.4 UCPを使用した基本的な接続の例
次の例では、データベースに接続して処理を実行し、終了するプログラムを示します。この例は単純で、場合によってはあまり実用的ではありません。しかし、データベースにアクセスするために、UCPプール対応のデータソースから接続を取得するのに必要な基本的な手順を示しています。
例2-1 基本的な接続の例
import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; import oracle.ucp.jdbc.PoolDataSourceFactory; import oracle.ucp.jdbc.PoolDataSource; public class BasicConnectionExample { public static void main(String args[]) throws SQLException { try { //Create pool-enabled data source instance. PoolDataSource pds = PoolDataSourceFactory.getPoolDataSource(); //set the connection properties on the data source. pds.setConnectionFactoryClassName("oracle.jdbc.pool.OracleDataSource"); pds.setURL("jdbc:oracle:thin:@//localhost:1521/XE"); pds.setUser("<user>"); pds.setPassword("<password>"); //Override any pool properties. pds.setInitialPoolSize(5); //Get a database connection from the datasource. Connection conn = pds.getConnection(); System.out.println("\nConnection obtained from " + "UniversalConnectionPool\n"); //do some work with the connection. Statement stmt = conn.createStatement(); stmt.execute("select * from foo"); //Close the Connection. conn.close(); conn=null; System.out.println("Connection returned to the " + "UniversalConnectionPool\n"); } catch(SQLException e) { System.out.println("BasicConnectionExample - " + "main()-SQLException occurred : " + e.getMessage()); } } }