プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの管理
12c (12.2.1.2.0)
E82892-02
目次へ移動
目次

前
次

7 Proxyデータ・ソースの使用

この章では、プロキシ・データ・ソースの構成方法とモニター方法について説明します。

この章では、プロキシ・データ・ソースの構成方法とモニター方法について説明します。プロキシ・データ・ソースは、WebLogic Serverマルチテナント環境のデータベース間で切替えを実行できます。

プロキシ・データ・ソースとは

ここでは、プロキシ・データ・ソースについて説明します。

WebLogic Serverマルチテナント環境で、データ・ソースを含むリソースは、パーティションごとにレプリケートされます。プロキシ・データ・ソースによって、パーティションまたはテナントに関連付けられたデータ・ソースにアクセスするための軽量メカニズムが提供され、複数のデータ・ソースの管理が簡略化されます。多くの場合、アプリケーションは、ネーミング規則やコンテキスト名(パーティションまたはテナント)などを認識しないまま、名前でデータ・ソースに迅速にアクセスする必要があります。プロキシ・データ・ソースは、基礎となるデータ・ソースに対するアクセスを提供します。すべての重要な処理が、それが指し示すデータ・ソースで発生します。つまり、実際には、基礎となるデータ・ソースがデプロイメント、管理、セキュリティなどを処理します。

注意:

必要に応じて、非マルチテナント環境でもプロキシ・データ・ソースを使用できます。

プロキシ・データ・ソースが提供するWebLogic Serverデータ・ソースへのアクセスには、次の特徴があります。

  • 最小限の構成。

  • 二重接続プーリングを含まない最小限のパフォーマンス・オーバーヘッド(たとえば、プロキシと基礎となる接続プールの両方で接続プーリングは発生しません)。

  • WebLogic Serverマルチテナント環境のレプリケートされたデータ・ソース間での切替え機能。

  • データ・ソース・オブジェクトへのJNDIアクセス。

  • javax.sql.DataSourceを実装するデータ・ソース・オブジェクト。

  • 環境のコンテキスト(パーティションやテナントなど)に基づいてデータ・ソースの切替えを実行するために実装できるコールバック・インタフェース。

  • 切替えに使用するコンテキスト・レベル(テナント、パーティション、スレッド内の他の情報など)と切替えの実行先データ・ソースの両方におけるアプリケーションによる切替え構成。

  • 切替え可能なすべてのデータ・ソースに対する直接アクセス。

プロキシ・データ・ソースの作成

ここでは、プロキシ・データ・ソースの作成方法について説明します。

WebLogicドメインにプロキシ・データ・ソースを作成する場合、WebLogic Server管理コンソール、WebLogic Scripting Tool (WLST)およびFusion Middleware Controlを使用できます。管理コンソールとWLSTによる方法については、次の項を参照してください。

Fusion Middleware Controlを使用してプロキシ・データ・ソースを作成する手順については、『Fusion Middleware ControlによるOracle WebLogic Serverの管理』のJDBCプロキシ・データ・ソースの作成に関する項を参照してください。

プロキシ・データ・ソースを作成する場合、次の点に注意してください。

  • プロキシ・データ・ソースは、切替えプロパティの値を検証して、それらがコンテキスト名やデータ・ソースに一致していることを確認しません。無効なデータ・ソースが指定されると、接続の取得に失敗します。ただし、プロキシが指し示すデータ・ソースは、構成時またはデプロイ時に使用可能である必要はありません。

  • プロキシが指し示すデータ・ソースに関するルールはありません。ただし、一般的に各メンバーは、基本的に同じ機能を提供する必要があります。それらは、異なるベンダー・ドライバに基づくものでかまいませんが、同じスキーマ、トランザクション・プロパティおよび一般機能を持つ必要があります。Oracleでは、Oracle Container Database/Pluggable Databaseテクノロジを使用するように基礎となるデータ・ソースを構成することや、データ・ソースでOracleドライバを使用することは想定されていません。

  • プロキシ・データ・ソースは、javax.sql.DataSourceインタフェースを提供します。XADataSourceと同等のものは、提供されていないか、不要です。XADataSourceの追加メソッドは、トランザクションのリスト化を処理する場合にのみ必要です。トランザクションの処理は、プロキシ・レベルではなくメンバー・レベル(実際のデータ・ソース・レベル)で処理されるため、2つのレベルでそれを行うと、問題が発生します。

  • プロキシ・データ・ソースは、アプリケーション・スコープの環境でサポートされず、それらがアプリケーション・スコープのデータ・ソースを参照することもありません。それらは、システム・リソースとして定義され、サーバーまたはクラスタ(あるいはその両方)をターゲットとする必要があります(WebLogic Serverは、ドメインをターゲットにできません)。

WebLogic Server管理コンソールでのプロキシ・データ・ソースの構成

ここでは、プロキシ・データ・ソースの構成方法について説明します。

WebLogic Server管理コンソールでプロキシ・データ・ソースを作成する手順については、Oracle WebLogic Server管理コンソール・オンライン・ヘルプのプロキシ・データ・ソースの作成を参照してください。この手順には、データ・ソースの構成ウィザードにアクセスする方法も含まれます。プロキシ・データ・ソースを作成するには、ウィザードの「新規」メニューから「プロキシ・データ・ソース」を選択します。

次の各項では、WebLogic Server管理コンソールからデータ・ソースの構成ウィザードを使用して、データ・ソースを作成するために使用する基本手順の概要について説明します。

プロキシ・データ・ソース・プロパティの設定

「PROXYデータ・ソース・プロパティ」セクションには、データ・ソースのアイデンティティとデータベース接続でのデータの処理方法を決定するオプションが含まれます。これらのプロパティを構成するためのガイドラインは、次のとおりです。

  • データ・ソース名 - 「名前」フィールドにプロキシ・データ・ソースの名前を入力します。JDBCデータ・ソースの名前は、WebLogicドメイン内でデータ・ソースを識別するために使用されます。システム・リソース・データ・ソースの場合、そのリソース以外のすべてのJDBCシステム・リソース(データ・ソースを含む)間で一意の名前にする必要があります。名前の競合を避けるために、データ・ソースの名前は、その他の構成オブジェクト(サーバー、アプリケーション、クラスタ、JMSキュー、JMSトピック、JMSサーバーなど)の名前の間でも一意にする必要があります。

  • スコープ - 使用可能なスコープのリストからデータ・ソースのスコープを選択します。スコープは、「グローバル」(ドメイン・レベル)または既存の「リソース・グループ」や「リソース・グループ・テンプレート」に設定できます。

  • JNDI名 - 「JNDI名」フィールドにプロキシ・データ・ソースのJNDI名を入力します。単一の名前または複数の名前でJNDIツリーにバインドされるように、データ・ソースを構成します。単一のJDBC接続プールを指す複数のデータ・ソースを含む従来の構成のかわりに、複数JNDI名のデータ・ソースを使用できます。詳細は、『Oracle WebLogic Server JNDIアプリケーションの開発』を参照してください。

  • 切替えプロパティ - プロキシ・データ・ソースの切替えコールバック・メソッドに渡す切替えプロパティを入力します。この値は、切替えコールバックの要件に応じて異なります。デフォルトの切替えコールバックでは、プロキシの切替えプロパティの書式は、partition1=datasource1;partition2=datasource2;...;default=datasourcenです。これは、切替えコールバックのgetDataSource()の第2引数に渡されます。

    デフォルトのWebLogic Server実装では、現在のパーティションを使用して切替えプロパティのデータ・ソースをルックアップします。パーティション内に存在しない場合、パーティション値はDOMAINです。一致が検出されないか、パーティション内に存在しない場合、defaultに関連付けられたデータ・ソースが使用されます。デフォルト値が適切ではない場合、default値を指定しないでください(NULLが返されます)。WebLogic Server内では、デフォルト・コールバックのみを使用できます。

  • 切替えコールバック - プロキシの切替えコールバック・クラスの名前を入力します。デフォルト・コールバックを使用するには、この値を空のままにします。コールバック・クラスを指定する場合、それにweblogic.jdbc.extensions.DataSourceSwitchingCallbackインタフェースを実装する必要があります。このインタフェースには、2つのパラメータを使用する1つのメソッドがあります。2つのパラメータの書式は、実装に応じて異なります。第1パラメータ(プロキシ・データ・ソースのJNDI名のカンマ区切りのリスト)は、デフォルト・コールバックでは使用されません。第2パラメータは、前述の切替えプロパティで説明したとおりです。

ターゲットの選択

新しいプロキシ・データ・ソースのデプロイ先に、1つ以上のターゲットを選択します。ターゲットを選択していない場合でもデータ・ソースは作成されますが、デプロイされません。そのデータ・ソースは、後でデプロイする必要があります。

WLSTを使用したプロキシ・データ・ソースの構成

ここでは、WLSTを使用したプロキシ・データ・ソースの構成方法について説明します。

他のデータ・ソース・タイプを作成するのと同じ方法で、WLSTを使用してプロキシ・データ・ソースを作成できます。ただし、必要な属性の数は、プロキシ・データ・ソースの方が少なくなります。

プロキシ・データ・ソースの構成要素は、次のとおりです。

  • name

  • datasource-type=PROXY

  • jdbc-data-source-params proxy-switching-properties - 切替えの実行方法を定義する文字列。この値は、オプションであり、指定しない場合はNULLです。この値は、構成可能で動的です。

  • jdbc-data-source-params proxy-switching-callback - weblogic.jdbc.extensions.DataSourceSwitchingCallbackを実装するクラスの名前を定義する文字列。この値は、オプションであり、WebLogic Serverではデフォルト・コールバック・クラスが使用されます。この値は、構成可能で動的です。

  • jdbc-data-source-params jndi-name - データ・ソースがWebLogic Server (Java EE) JNDIにマップされる文字列の名前の配列。JNDI名に関する他のネーミング規則に加え、プロキシ・データ・ソースのJNDI名には、カンマ(,)を含めることができません。

WebLogic Serverデータ・ソース・ディスクリプタからの他の要素は、認識されません。他の要素を指定しても、無視されます。

例7-1に、プロキシ・データ・ソースを作成するためのサンプルWLSTスクリプトを示します

例7-1 プロキシ・データ・ソースを作成するためのサンプルWLSTスクリプト

import sys, socket
import os
hostname = socket.gethostname()
connect("weblogic","welcome1","t3://"+hostname+":7001")
edit()
startEdit()
serverName="AdminServer"
serverBean = getMBean('/Servers/'+serverName)
host='%s.us.company.com' %hostname
print 'Creating Proxy datasource'
domain = getMBean("/")
startEdit()
resourceName='proxyDS'
print "Creating data source in domain"
systemResource=domain.createJDBCSystemResource(resourceName)
systemResource.setName(resourceName)
jdbcResource=systemResource.getJDBCResource()
jdbcResource.setName(resourceName)
jdbcResource.setDatasourceType('PROXY')
jdbcDataSourceParams=jdbcResource.getJDBCDataSourceParams()
jdbcDataSourceParams.addJNDIName(resourceName)
jdbcDataSourceParams.setProxySwitchingProperties('partition1=partition1:ds;default=domain:ds')
cd('/SystemResources/' + resourceName )
set('Targets',jarray.array([ObjectName('com.bea:Name=' + serverName + ',Type=Server')], ObjectName))
save()
activate()

注意:

プロキシ・データ・ソースの基礎としてWebLogic Serverに付属する汎用データ・ソースを作成するためのサンプルWLSTスクリプトも使用できます。
EXAMPLES_HOME\wl_server\examples\src\examples\wlst\online\jdbc_data_source_creation.py

ここでEXAMPLES_HOMEは、WebLogic Serverのコード・サンプルを構成するディレクトリです。『WebLogic Scripting Toolの理解』のWLSTオンライン・サンプル・スクリプトに関する項を参照してください。

プロキシ・データ・ソースJDBCリソースのモニタリング

ここでは、関連するランタイムMBeanを通じたJDBCプロキシ・データ・ソースの実行時の統計について説明します。

プロキシ・データ・ソースの実行時の統計は、WebLogic Server管理コンソールを使用するか、関連するランタイムMBeanを通じて表示できます。

JDBCProxyDataSourceRuntimeMBeanは、JDBCDataSourceRuntimeMBeanを拡張して、WebLogic Server管理コンソールなどのツールのJDBCサービスから他のJDBC MBeanのリストとともにそれを返すことができるようにします。PROXYデータ・ソースの場合、状態が設定されます。アクティブな接続などの実行時の統計は、すべて設定されません(それらは-1に設定されます)。

実行時の統計に加え、テストに成功すると、testPool()操作はNULLを返します。それ以外の場合、エラー文字列を返します(他のデータ・ソース・タイプと同様)。操作の残りは、アクションを実行しません。

詳細は、Oracle WebLogic Server MBeanリファレンスのJDBCProxyDataSourceRuntimeMBeanを参照してください。

JDBCのモニタリングの詳細は、「WebLogic JDBCリソースのモニタリング」を参照してください