[WLS, Database] WLS UCP Datasource

原文はこちら。
https://blogs.oracle.com/WebLogicServer/entry/wls_ucp_datasource1

WebLogic Server (WLS) 12.2.1では、Oracle Universal Connetion Pool(UCP)を代替接続プールとして利用する新たなデータソースタイプが導入されています。UCPデータソースを使うと、WebLogic Serverドメインの一部としてUCP接続プールの構成、デプロイ、監視が可能です。Oracle Thin Driver(シンプル、XA, リプレイ・ドライバ)での動作保証済みです。

製品ドキュメントは以下にあります。
Oracle® Fusion Middleware Administering JDBC Data Sources for Oracle WebLogic Server 12c (12.2.1)
Using Universal Connection Pool Data Sources
http://docs.oracle.com/middleware/1221/wls/JDBCA/ucp_datasources.htm#JDBCA746 
この記事の目的は、情報を再生産することではなく、機能をまとめて追加情報やデータソース構成時のスクリーンショットを提供することにあります。
UCPデータソースはjdbc-data-sourceディスクリプタを使ってシステムリソースとして定義します。Multitenantでは、これらのシステムリソースをドメインレベル、パーティションレベル、リソースグループテンプレート、リソースグループレベルで定義できます。

UCPデータソースの構成は、標準的なデータソースパラメータを使い、非常にシンプルです。 名前を付け、URL、ユーザ名、パスワード、JNDI名を設定すればよく、詳細な構成やチューニングのほとんどは、UCP接続プロパティのフォームで実施します。管理者はLogWriterを除いた、oracle.ucp.jdbc.PoolDataSourceImplがサポートする任意のsetterのための値を設定することができます。これは属性名(大文字小文字を認識します)から"set"を取り除いたものです。
Oracle® Universal Connection Pool for JDBC Java API Reference 11g Release 2 (11.2)
oracle.ucp.jdbc - Class PoolDataSourceImpl
http://docs.oracle.com/cd/E11882_01/java.112/e12826/oracle/ucp/jdbc/PoolDataSourceImpl.html 
例えば、以下のような形で属性値を設定できます。
ConnectionHarvestMaxCount=3
ドキュメントのTable 8-2では、WebLogic Server 12.2.1に同梱されている12.1.0.2 UCP jarファイルを基づき、現在サポートされているUCP属性のすべてをリストアップしています。
組み込み済みの検証として、ドライバと接続ファクトリの常識的な組合せがあります。
ドライバ接続ファクトリクラス (ConnectionFactoryClassName)
oracle.ucp.jdbc.PoolDataSourceImpl (default)oracle.jdbc.pool.OracleDataSource
oracle.ucp.jdbc.PoolXADataSourceImploracle.jdbc.xa.client.OracleXADataSource
oracle.ucp.jdbc.PoolDataSourceImploracle.jdbc.replay.OracleDataSourceImpl
接続をシンプルにするため、"ドライバ名"を指定しない場合、oracle.ucp.jdbc.PoolDataSourceImplがデフォルト値となり、ConnectionFactoryClassName接続プロパティは上表の対応するエントリがデフォルト値になります。

製品ドキュメントのExample 8.1では、UCPデータソースをWLSTで作成する完全な例ですが、WLSTの使用はこの頃のアプリケーション構成では一般的です。

weblogic.management.runtime.JDBCUCPDataSourceRuntimeMBeanを使って監視できます。このMBeanはJDBCDataSourceRuntimeMBeanを拡張したものなので、管理コンソールやWLSTスクリプトといったツールのために、JDBCサービスから他のJDBC MBeanのリストを伴って結果を返します。UCPデータソースのために、状態や以下の属性を設定します。
  • CurrCapacity
  • ActiveConnectionsCurrentCount
  • NumAvailable
  • ReserveRequestCount
  • ActiveConnectionsAverageCount
  • CurrCapacityHighCount
  • ConnectionsTotalCount
  • NumUnavailable
  • WaitingForConnectionSuccessTotal
管理コンソールやFusion Middleware Controlを使うと、UCPデータソースの作成、更新、監視が簡単です。

下図は管理コンソールのイメージです。作成にあたっては、データソースタイプのドロップダウンリストが現れ、UCPも含まれています。作成した結果、データソースディスクリプタのdatasource-typeは"UCP"になっています。

最初に、データソースのIDを決定するJDBCデータソースのプロパティを指定します。このプロパティには、データソース名、スコープ(グローバルもしくはMultitenantのパーティション、リソースグループ、リソースグループテンプレート)、JNDI名が含まれています。

次のページでは、ユーザー名、パスワード、URL、追加接続プロパティを設定します。追加接続プロパティを使ってUCP接続プールを構成します。コンソールでUCPデータソースの接続プロパティを設定する方法には2通りの方法があり、一つは接続プロパティのページで、UCPドライバで利用可能なすべての接続プロパティが表示されるので、プロパティ値を指定するだけでOKです。もう一方の方法は、続くデータベース接続テストページで、propertyName=valueの形で直接プロパティのテキストボックスに指定する、というものです。前ページで指定したプロパティ値はテキストボックス中に現れます。このページを使って、接続プロパティを含む指定した値のテストをすることができます。

データベース接続のテストページでは、プロパティの値をフリーフォームで入力し、データソース構成が確定される前に、データベース接続をテストすることができます。必要に応じて、プロパティ、システム・プロパティ、暗号化されたプロパティ属性を使って追加の構成情報を提供することができます。


最後の手順で、データソースのターゲットを指定します。新規のUCPデータソースのデプロイ対象を一つ以上選択することができます。ターゲットを指定しない場合、データソースを作成してもデプロイされないので、後でアプリケーションで接続を取得するまでにデータソースをデプロイする必要があります。

データソースの編集では、このデータソースタイプを構成、ターゲット指定、監視するための最小限のタブや属性が公開されています。


Middleware Controlは管理コンソールと似ていますが、Look&Feelが異なります。


JDBCデータソースをWebLogic Serverドメインのドロップダウンから選択すると、既存のデータソースと関連づけられたデータソースタイプ、スコープ、そしてもし利用可能であればリソースグループやリソースグループテンプレート、パーティションが確認できます。

既存のデータソース名を選択すると、データソース編集画面が現れます。リソースグループ名(存在する場合)を選択すると、リソースグループの編集画面が現れます。既存のデータソースのパーティション名を選択すると、パーティション属性の編集画面が現れます。[作成]を選択すると、データソースのタイプを選択するドロップダウンが表示されますので、UCPデータソースを選択することができます。

UCP作成画面の最初では、データソース名、スコープ、JNDI名、ドライバクラス名を指定する必要があります。
接続プロパティは次ページで指定します。管理コンソールとは異なり、UCP接続プロパティはリスト表示されませんので、"+"をクリックして新規エントリを追加し、プロパティ名と値を入力する必要があります。このページではデータベース接続もテストできます。
最後のページで、データソースのターゲット指定、新規オブジェクトの作成が可能です。

データソースを作成しデプロイすると、他のWebLogic Serverデータソースと同じく、アプリケーションでJNDIをルックアップしUCPデータソースにアクセスします。
import javax.naming.Context;
import javax.naming.InitialContext;
import java.sql.Connection;
import oracle.ucp.jdbc.PoolDataSource;

Context ctx = new InitialContext();
PoolDataSource pds = (PoolDataSource) ctx.lookup("ucpDS");
Connection conn = pds.getConnection();
アプリケーションでの利用方法は他のWebLogic Serverのデータソースと似ていますが、WebLogic Serverのデータソースの機能すべてを持っているわけではなく、UCP接続プールがサポートする追加機能が利用できます。なお、UCPデータソースはWebLogic ServerのセキュリティやJTAトランザクションと統合されていないことにご注意ください。UCP自身でJMX管理を有しています。UCPの概要については以下のリンクをどうぞ。
Oracle® Universal Connection Pool for JDBC開発者ガイド 12cリリース1 (12.1)
UCPの概要
http://docs.oracle.com/cd/E57425_01/121/JJUCP/intro.htm#JJUCP8109
Oracle® Universal Connection Pool for JDBC Developer's Guide 12c Release 1 (12.1)
Introduction to UCP
https://docs.oracle.com/database/121/JJUCP/intro.htm#JJUCP8109 

PoolDataSourceFactory.getPoolDataSource() の実行例を参照し、データソースのSetterを呼び出すと、WLSTや管理コンソールやFusion Middleware ControlのGUIで設定したUCPデータソースの内容を置き換えます。上記のように接続を取得する例を参考にしてください。

0 件のコメント:

コメントを投稿