pureQuery ランタイム・プロパティーを設定して、pureQuery Runtime の操作を制御します。pureQuery ランタイム・プロパティーのスコープは、特定の WebSphere® ロケーションでプロパティーを設定することにより制御できます。
複数のロケーションでプロパティーを設定した場合、pureQuery Runtime は、ロケーションに基づく優先順位に従ってどの値を使用するかを決定します。
WebSphere では、ロケーションを使用してプロパティーのスコープを決定し、プロパティーが複数のロケーションで指定されている場合は、優先順位を決定します。
WebSphere のスコープ・レベルの優先順位は、次のとおりです。
- アプリケーション・レベル: pureQuery プロパティーは、WebSphere アプリケーションに適用されます。アプリケーション・レベルでの pureQuery ランタイム・プロパティーの設定は、同じプロパティーのグローバル・レベルの設定およびデータ・ソース・レベルの設定の両方に優先します。同じプロパティーでない場合、pureQuery ランタイム・プロパティーは、グローバル・レベルの pureQuery プロパティーおよびデータ・ソース・レベルの pureQuery プロパティーとマージされます。
- データ・ソース・レベル: pureQuery プロパティーは、データ・ソースから作成されるすべての接続に適用されます。データ・ソース・レベルのプロパティー設定は、グローバル・レベルと両方で同じプロパティーが定義されている場合は、グローバル・レベルのプロパティーの設定に優先します。同じプロパティーでない場合、pureQuery ランタイム・プロパティーはグローバル・レベルの pureQuery プロパティーとマージされます。
- グローバル・レベル: pureQuery プロパティーは、WebSphere Application Server 内のすべてのアプリケーションに適用されます。
pureQuery ランタイム・プロパティー finalRepositoryProperties を使用すると、データベース内のファイル・システムまたはリポジトリーからランタイム・プロパティーを取得できます。ファイル・システムまたはリポジトリーからランタイム・プロパティーを取得すると、優先順位に影響します。
- ファイル・システムまたはリポジトリーの指定
finalRepositoryProperties プロパティーで指定されたロケーションから pureQuery ランタイム・プロパティーが取得および設定される前に、pureQuery クライアント最適化と既存の pureQuery ランタイム・プロパティーがデフォルト値にリセットされます。
データ・ソース・レベルで設定されたいかなるプロパティーも保存されません。グローバル pureQuery プロパティーとして取得および設定されたプロパティーは、影響を受けません。
pureQuery ランタイム・プロパティーの設定がどのように決定されるかを、次の例で示します。
- プロパティーが複数のレベルで設定されている場合、どの値が使用されるかはレベルによって決まります。例えば、captureMode の
値が pdq.properties グローバル・プロパティー・ファイルで OFF に設定され、アプリケーションによって使用されるデータ・ソースの
データ・ソース・レベル pdqProperties で ON、NEW_STMTS、または LITE に設定され、
アプリケーション・レベル pdq.appwide.properties で OFF に設定されている場合、
アプリケーション・レベルの設定が優先され、captureMode プロパティーの値は OFF に設定されます。
- finalRepositoryProperties プロパティーを使用して、pureQuery ランタイム・プロパティーがファイル・システムまたはリポジトリーから取得される場合、グローバル、データ・ソース、アプリケーションの各レベルでのプロパティー設定にかかわらず、ロケーションで指定されている captureMode プロパティーの値が優先されます。例えば、captureMode が、
アプリケーションによって使用されるデータ・ソースのデータ・ソース・レベル pdqProperties で ON、NEW_STMTS、
または LITE に設定され、finalRepositoryProperties プロパティーも設定されている
場合、pureQuery Runtime は、finalRepositoryProperties プロパティーによって指定されている
ロケーションからプロパティーを取得します。
captureMode プロパティーが取得されるプロパティーに設定されていない場合、captureMode プロパティーはデフォルトの「オフ」に設定されます。captureMode プロパティーの値が取得されるプロパティーとして設定されている場合は、その値が使用されます。
WebSphere 環境で pureQuery ランタイム・プロパティーのスコープを制御する
WebSphere 環境では、pureQuery ランタイム・プロパティーを異なるロケーションで設定して、プロパティーのスコープ・レベルを制御します。ロケーションは、プロパティーが複数のロケーションに設定されている場合は優先順位にも影響します。
- グローバル・スコープのロケーション
- プロパティー・ファイル pdq.properties で pureQuery Runtime プロパティーを指定し、
そのファイルを WebSphere JDBC プロバイダーのクラスパスに含めます。
pdq.properties ファイルを使用してグローバル・プロパティーを設定する場合は、
ファイル pdq.properties が含まれているディレクトリーを、pureQuery JAR ファイルが含まれている JDBC プロバイダーのクラスパス内に入れます。
JDBC プロバイダーのクラスパスで設定されたプロパティーは、JDBC ドライバーを使用するすべてのアプリケーションに適用されます。
ここでは、特定のアプリケーションまたはデータ・ソースに適用されるプロパティーを指定しないでください。
pureQuery Runtime プロパティー traceFile は、グローバル pdq.properties ファイルでのみ指定できます。
WebSphere Application Server 管理コンソールでグローバル pureQuery Runtime プロパティーを設定します。
- リンク「JDBC プロバイダー」を選択します。
- JDBC プロバイダーに対して「DB2 Universal JDBC Driver Provider」または
「DB2 Universal JDBC Driver Provider (XA)」を選択します。
- 必要に応じて、pureQuery JAR ファイルが含まれているディレクトリーを「クラスパス」フィールドに追加します。
注: ファイル名 pdq.properties を含めないでください。
- 選択された JDBC プロバイダーに変更を適用し、その変更を保存します。
- DB2 Universal JDBC Driver Provider とDB2 Universal JDBC Driver Provider (XA) の
両方の JDBC プロバイダーについてフィールド「クラスパス」を変更しなければならない場合があります。
- 「クラスパス」フィールドに指定したディレクトリーに pdq.properties ファイルを入れます。
pdq.properties がこのディレクトリー内にある場合は、WebSphere Application Server と pureQuery Runtime の
両方で、このプロパティー・ファイルが検出されます。
- 変更を有効にするために、ご使用のアプリケーション環境に応じて、
アプリケーション・サーバーと WebSphere Application Server の一方または両方を再始動する必要があります。
注: SQL ステートメントの実行を動的モードから静的モードに切り替えるために pdq.properties ファイルを変更した場合は、変更を反映するためにアプリケーション・サーバーを再始動する必要があります。プロパティーは、
その特定 JDBC プロバイダーを使用するすべてのデータ・ソースに適用されるため、すべてのアプリケーションは同じ実行モードで実行され、
キャプチャー対象の SQL ステートメントはすべて、キャプチャー時に同一 pureQueryXML ファイルに組み込まれます。
- データ・ソース・レベルのスコープのロケーション
JDBC ドライバーのカスタム・プロパティー pdqProperties を WebSphere データ・ソースに対して指定します。
ユーザーは、データ・ソースごとに pureQuery ランタイム・プロパティーを設定できます。データ・ソース・レベルが適切であるのは、それぞれのデータ・ソースごとの設定が互いに独立している必要がある場合です。例えば、アプリケーションが複数の個別のデータ・ソースを使用する場合、それぞれのデータ・ソースは独自の pureQueryXML ファイルでそのターゲットとなっている SQL をキャプチャーします。
プロパティーがデータ・ソースに対して設定されている場合、プロパティーはそのデータ・ソースを使用しているすべてのアプリケーションに適用されます。したがって、アプリケーションがデータ・ソースを共有していると、キャプチャーされる SQL ステートメントはすべてのアプリケーションの共通ファイルでキャプチャーされます。
データ・ソースの pdqProperties プロパティーの値を変更するたびに、
アプリケーション・サーバーがその新しい値を使用できるように、アプリケーション・サーバーを再始動する必要があります。
- アプリケーション・レベルのスコープのロケーション
pureQuery ランタイム・プロパティーをアプリケーション・レベルのスコープで有効にするには、アプリケーションの CLASSPATH で次のプロパティー・ファイルのいずれかまたは両方を使用します。
pdq.appwide.properties ファイルは、アプリケーション固有の pureQuery プロパティーを指定します。このファイルで指定されるすべてのプロパティーの値が、アプリケーションが使用するすべてのデータ・ソースに適用されます。
pdq.DSName.properties ファイルは、あるアプリケーションでのデータ・ソース固有のプロパティーを指定します。このファイルで指定されるプロパティーは、アプリケーションが使用する特定のデータ・ソースに適用されます。DSName は、データ・ソースでの WebSphere カスタム・プロパティー dataSourceName のストリング値です。
このカスタム・プロパティーは、WebSphere カスタム・プロパティー pdqProperties の設定に使用されるステップと似たステップを使用して設定されます。
データ・ソース名 DSName を使用しているアプリケーションの場合、pdq.DSName.properties で指定されたプロパティーは pdq.appwide.properties で指定されたものに優先します。
pureQuery Runtime プロパティー・ファイルが
含まれている JAR ファイルを作成して、その JAR ファイルを WebSphere インストール済み環境の
インストール済みアプリケーション・ディレクトリーの下に直接入れます。
その後、pureQuery Runtime プロパティーを使用するすべてのモジュールの MANIFEST.MF ファイルを更新します。
アプリケーションが pdq.appwide.properties または pdq.dsName.properties ファイルなどのアプリケーション固有のプロパティー・ファイルを使用している場合、プロパティーが変更されたときに新規プロパティーを有効にするには、アプリケーション・サーバーを再始動する代わりに、WebSphere 接続プールをパージし、アプリケーションを再開して、新規プロパティー値を有効にする必要があります。
次の例では、pureQuery Runtime プロパティーは pdq.appwide.properties に含まれていて、動的 Web プロジェクト (.war ファイル) は .ear ファイルに含まれています。
WebSphere 環境でアプリケーションを
デプロイした後、installedApps ディレクトリーには MyAppEAR.ear ディレクトリーが含まれています。
以下の手順では、アプリケーション・レベルで pureQuery Runtime プロパティーを有効にする方法について説明します。
- pdq.appwide.properties が含まれている JAR ファイルを作成します。
この例では、ファイルは pdq_props.jar です。
- pdq_props.jar を次のフォルダーに入れます。
WAS_ROOT/profiles/AppSrv01/installedApps/version1/MyAppEAR.ear
- pureQuery Runtime プロパティーを使用するすべてのモジュールの MANIFEST.MF ファイルを編集します。
この例では、WAR ファイル MyApp.war がこのプロパティーを使用し、MANIFEST.MF が次のディレクトリーに入っています。
WAS_ROOT/profiles/AppSrv01/installedApps/version1/MyAppEAR.ear/MyAppEAR.war/META-INF/MANIFEST.MF
pdq_props.jar ファイルに対して
次の Class-Path 項目を追加します。
Class-Path: pdq_props.jar
この項目は MANIFEST.MF ファイル内の単一行にあり、
プロパティーとファイル名の間にはスペースが挿入されています。
アプリケーション内のモジュールがそれぞれ異なるデータ・ソースを使用する場合は、
データ・ソースごとに pureQuery Runtime プロパティーを指定できます。
この例では、データ・ソースでカスタム JCC プロパティー dataSourceName が設定されていることが前提となっています。
また、この例では、DS1 および DS2 というデータ・ソース名を持つ 2 つの異なる
データ・ソースが WebSphere Application Server 環境に存在します。
この例では、アプリケーションは次の 2 つのモジュールで構成されています。
- データ・ソース DS1 を使用する Web モジュール Web1
- データ・ソース DS2 を使用する EJB モジュール EJB1
データ・ソースごとに 2 つの pureQuery Runtime プロパティー・ファイルを作成します。
- pdq.DS1.properties
- pdq.DS2.properties
2 つの pureQuery Runtime ファイルが含まれている JAR ファイルを作成し、
それを前述のようにインストール済みアプリケーション・ディレクトリーの下に入れます。
- ロケーションがファイル・システムまたはリポジトリー
pureQuery ランタイム・プロパティー finalRepositoryProperties を使用して、データベース内のファイル・システムまたはリポジトリーを指定します。
プロパティーは、グローバル・レベル、データ・ソース・レベル、またはアプリケーション・レベルで指定できます。
pureQuery Runtime は、
finalRepositoryProperties プロパティーで指定されているロケーションからプロパティーを取得する場合に次の規則を適用します。
pureQuery Runtime repositoryRequired プロパティーは、ファイル・システムまたはリポジトリーを使用しているときの pureQuery Runtime の動作を制御します。WebSphere ロケーション pureQuery でプロパティーを指定して、pureQuery Runtime の動作を制御します。repositoryRequired プロパティーの値は、取得されるプロパティーの 1 つとして repositoryRequired プロパティーを設定することによりオーバーライドできます。