ヘッダーをスキップ
Oracle Universal Connection Pool for JDBC開発者ガイド
11gリリース1(11.1.0.7.0)
B51855-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

2 スタート・ガイド

この章の内容は次のとおりです。

要件

UCP for JDBCには、次の設計時および実行時の要件があります。

基本的な接続の手順

UCP for JDBCには、UCP JDBC接続プールから接続を流用するためにアプリケーションで使用されるプール対応のデータソースが用意されています。最も基本的な使用例では、接続プールは明示的に定義されません。かわりに、接続が流用される際に、デフォルトの接続プールが暗黙的に作成されます。

次の手順では、データベースにアクセスするために、UCP for JDBCプール対応のデータソースから接続を取得する方法について説明します。例の詳細は、例2-1「基本的な接続の例」を参照してください。

  1. UCP for JDBCのデータソース・ファクトリ(oracle.ucp.jdbc.PoolDataSourceFactory)を使用し、getPoolDataSourceメソッドを使用してプール対応のデータソースのインスタンスを取得します。データソース・インスタンスの型はPoolDataSourceである必要があります。次に例を示します。

    PoolDataSource  pds = PoolDataSourceFactory.getPoolDataSource();
    
  2. データベースへの物理的な接続の取得に必要な接続プロパティを設定します。これらのプロパティはデータソース・インスタンスに設定され、データベースに接続するためのURL、ユーザー名およびパスワード、物理的な接続の取得に使用されるコネクション・ファクトリなどがあります。これらは、JDBCドライバおよびデータベースに固有のプロパティです。次に例を示します。

    pds.setConnectionFactoryClassName("oracle.jdbc.pool.OracleDataSource");
    pds.setURL("jdbc:oracle:thin:@//localhost:1521/XE");
    pds.setUser("<user>");
    pds.setPassword("<password>");
    
  3. 接続プールのデフォルトの動作を上書きするために、プール・プロパティを設定します。プール・プロパティはデータソース・インスタンスに設定されます。次に例を示します。

    pds.setInitialPoolSize(5);
    
  4. データソース・インスタンスを使用して接続を取得します。戻される接続は、データソースの接続プール内にある物理的な接続への論理的なハンドルです。次に例を示します。

    Connection conn = pds.getConnection();
    
  5. 接続を使用して、データベースで処理を実行します。

    Statement stmt = conn.createStatement ();
    stmt.execute("SELECT * FROM foo");
    
  6. 接続をクローズし、プールに返します。

    conn.close();
    

基本的な接続の例

次の例では、データベースに接続して処理を実行し、終了するプログラムを示します。この例は単純で、場合によってはあまり実用的ではありません。しかし、データベースにアクセスするために、UCP for JDBCプール対応のデータソースから接続を取得するのに必要な、基本的な手順を明示しています。

例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());
      }
   }
}

UCP for JDBC APIの概要

次の各項では、最も一般的に使用されるUCP for JDBC 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インタフェースは、接続アフィニティを有効または無効にするコールバックの作成に使用されますが、接続アフィニティの動作のカスタマイズにも使用できます。別の例をあげると、中止接続機能は、流用された接続が一定の期間非アクティブであると、その接続をプールに返します。AbandonedConnectionTimeoutCallbackインタフェースは、中止タイムアウトが発生した後に接続をプールに返す必要があるかどうかをカスタマイズするために使用できます。また、プールに返される前に接続が処理されるようにするためにも使用できます。

ロギングの設定

UCP for JDBCは、JDKロギング機能(java.util.logging)を利用しています。ロギングは、デフォルトでは無効になっており、ログ・メッセージを出力するために構成する必要があります。ロギングは、ログ構成ファイルを使用するか、APIレベルの構成を使用して、構成できます。


注意:

デフォルトのログ・レベルはnullです。そのため、デフォルトでは親のログ出力でのログ・レベルが必ず使用されます。

ロギング・プロパティ・ファイルの使用方法

ロギングは、プロパティ・ファイルを使用して構成できます。プロパティ・ファイルの場所は、ロギング構成ファイル・プロパティのJavaプロパティとして設定する必要があります。次に例を示します。

java -Djava.util.logging.config.file=log.properties

ロギング・プロパティ・ファイルは、ログの書込みに使用するハンドラ、ログの書式設定に使用するフォーマッタ、デフォルトのログ・レベルの他、特定のパッケージおよびクラスのログ・レベルを定義します。次に例を示します。

handlers = java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.level = ALL
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

oracle.ucp.level = FINEST
oracle.ucp.jdbc.PoolDataSource = WARNING

カスタム・フォーマッタは、UCP for JDBCに同梱されており、フォーマッタ・プロパティの値として入力できます。次に例を示します。

java.util.logging.ConsoleHandler.formatter = oracle.ucp.util.logging.UCPFormatter

UCP for JDBC APIおよびJDK APIの使用方法

ロギングは、UCP for JDBC APIまたはJDK APIのいずれかを使用して動的に構成できます。UCP for JDBC APIを使用する場合は、接続プール・マネージャを使用してロギングを構成します。JDKを使用する場合は、java.util.logging実装を使用してロギングを構成します。

次の例では、UCP for JDBC APIを使用してロギングを構成しています。

UniversalConnectionPoolManager mgr = UniversalConnectionPoolManagerImpl. getUniversalConnectionPoolManager();

mgr.setLogLevel(Level.FINE);

次の例では、JDKロギング実装を直接使用しています。

Logger.getLogger("oracle.ucp").setLevel(Level.FINEST);
Logger.getLogger("oracle.ucp.jdbc.PoolDataSource").setLevel(Level.FINEST);

サポートされるログ・レベル

次に、JDBCでサポートされる各ログ・レベルを示します。FINEよりも低いレベルでは、ユーザーにとって重要とはかぎらない出力が生成されます。FINERよりも低いレベルでは、非常に大量の出力が生成されます。

  • INTERNAL_ERROR: 内部エラー

  • SEVERE: SQL例外

  • WARNING: SQL警告およびその他の隠れた問題

  • INFO: パブリック・イベント(接続の試行やOracle RACイベントなど)

  • CONFIG: SQL文

  • FINE: パブリックAPI

  • TRACE_10: 内部イベント

  • FINER: 内部API

  • TRACE_20: 内部デバッグ

  • TRACE_30: 大量の内部API

  • FINEST: 大量の内部デバッグ