pureQuery® ランタイム・プロパティーを設定して、pureQuery Runtime の操作を制御します。
pureQuery ランタイム・プロパティーのスコープは、特定の WebSphere® ロケーションでプロパティーを設定することにより制御できます。
WebSphere では、ロケーションを使用してプロパティーのスコープを決定し、プロパティーが複数のロケーションで指定されている場合は、優先順位を決定します。
WebSphere のスコープ・レベルの優先順位は、次のとおりです。
- アプリケーション・レベル: pureQuery プロパティーは、WebSphere アプリケーションに適用されます。
アプリケーション・レベルでの pureQuery ランタイム・プロパティーの設定は、同じプロパティーのグローバル・レベルの設定およびデータ・ソース・レベルの設定の両方よりも優先します。
同じプロパティーでない場合、pureQuery ランタイム・プロパティーは、グローバル・レベルの pureQuery プロパティーおよびデータ・ソース・レベルの pureQuery プロパティーとマージされます。
- データ・ソース・レベル: pureQuery プロパティーは、データ・ソースから作成されるすべての接続に適用されます。
データ・ソース・レベルのプロパティー設定は、グローバル・レベルと両方で同じプロパティーが定義されている場合は、グローバル・レベルのプロパティーの設定に優先します。同じプロパティーでない場合、pureQuery ランタイム・プロパティーはグローバル・レベルの pureQuery プロパティーとマージされます。
- グローバル・レベル: pureQuery プロパティーは、WebSphere Application Server 内のすべてのアプリケーションに適用されます。
pureQuery ランタイム・プロパティー finalRepositoryProperties を使用すると、データベース内のファイル・システムまたはリポジトリーからランタイム・プロパティーを取得できます。
ファイル・システムまたはリポジトリーからランタイム・プロパティーを取得すると、優先順位に影響します。
- ファイル・システムまたはリポジトリーの指定
pureQuery Runtime が finalRepositoryProperties プロパティーで指定されたロケーションからプロパティーを取得して設定する前に、pureQuery クライアント最適化と既存の pureQuery ランタイム・プロパティーがデフォルト値にリセットされます。
データ・ソース・レベルで設定されたいかなるプロパティーも保存されません。
pureQuery ランタイム・プロパティーの設定がどのように決定されるかを、次の例で示します。
- プロパティーが複数のレベルで設定されている場合、どの値が使用されるかはレベルによって決まります。例えば、captureMode の値が pdq.properties グローバル・プロパティー・ファイルで OFF に設定され、アプリケーションによって使用されるデータ・ソースのデータ・ソース・レベル pdqProperties で ON、NEW_STMTS、または LITE に設定され、アプリケーション・レベル pdq.appwide.properties で OFF に設定されている場合、アプリケーション・レベルの設定が優先され、captureMode プロパティーの値は OFF に設定されます。
- finalRepositoryProperties プロパティーを使用して、pureQuery ランタイム・プロパティーがファイル・システムまたはリポジトリーから取得される場合、グローバル、データ・ソース、アプリケーションの各レベルでのプロパティー設定にかかわらず、finalRepositoryProperties プロパティーで指定されたロケーションで指定されているプロパティーの値が優先されます。
例えば、captureMode が、アプリケーションによって使用されるデータ・ソースのデータ・ソース・レベル pdqProperties で ON、NEW_STMTS、または LITE に設定され、finalRepositoryProperties プロパティーも設定されている
場合、pureQuery Runtime は、finalRepositoryProperties プロパティーによって指定されているロケーションからプロパティーを取得します。
captureMode プロパティーが取得されるプロパティーに設定されていない場合、captureMode プロパティーはデフォルトの「オフ」に設定されます。captureMode プロパティーの値が取得されるプロパティーとして設定されている場合は、その値が使用されます。一般に、最終リポジトリーのロケーションを定義しているプロパティーを除くすべての非グローバル・プロパティーに同じ規則が適用されます。
WebSphere 環境で pureQuery ランタイム・プロパティーのスコープを制御する
WebSphere 環境では、pureQuery ランタイム・プロパティーを異なるロケーションで設定して、プロパティーのスコープ・レベルを制御します。
ロケーションは、プロパティーが複数のロケーションに設定されている場合は優先順位にも影響します。
- グローバル・スコープのロケーション
- プロパティー・ファイル pdq.properties で pureQuery ランタイム・プロパティーを指定し、そのファイルが含まれているディレクトリーを WebSphere JDBC プロバイダーのクラスパス内に入れます。
pdq.properties ファイルを使用してグローバル・プロパティーを設定する場合は、ファイル pdq.properties が含まれているディレクトリーを、pureQuery JAR ファイルが含まれている JDBC プロバイダーのクラスパス内に入れます。
JDBC プロバイダーのクラスパスで設定されたプロパティーは、JDBC ドライバーを使用するすべてのアプリケーションに適用されます。
ここでは、特定のアプリケーションまたはデータ・ソースに適用されるプロパティーを指定しないでください。
pureQuery ランタイム・プロパティー traceFile は、グローバル pdq.properties ファイルのみで指定できます。
WebSphere Application Server の管理コンソールでグローバル pureQuery ランタイム・プロパティーを設定することもできます。
- リンク「JDBC プロバイダー」を選択します。
- JDBC プロバイダーに対して「DB2 Universal JDBC Driver Provider」または
「DB2 Universal JDBC Driver Provider (XA)」を選択します。
- pureQuery JAR ファイルをクラスパスに追加する必要がある場合は、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 ランタイム・プロパティー・ファイルが含まれている JAR ファイルを作成して、その JAR ファイルを WebSphere インストール済み環境のインストール済みアプリケーション・ディレクトリーの下に直接入れます。
その後、pureQuery ランタイム・プロパティーを使用するすべてのモジュールの MANIFEST.MF ファイルを更新します。
アプリケーションが pdq.appwide.properties または pdq.dsName.properties ファイルなどのアプリケーション固有のプロパティー・ファイルを使用している場合、プロパティーが変更されたときに新規プロパティーを有効にするには、アプリケーション・サーバーを再始動する代わりに、WebSphere 接続プールをパージし、アプリケーションを再開して、新規プロパティー値を有効にする必要があります。
次の例では、pureQuery ランタイム・プロパティーは pdq.appwide.properties に含まれていて、動的 Web プロジェクト (.war ファイル) は .ear ファイルに含まれています。
WebSphere 環境でアプリケーションを
デプロイした後、installedApps ディレクトリーには MyAppEAR.ear ディレクトリーが含まれています。
以下の手順では、アプリケーション・レベルで pureQuery ランタイム・プロパティーを有効にする方法について説明します。
- pdq.appwide.properties が含まれている JAR ファイルを作成します。
この例では、ファイルは pdq_props.jar です。
- pdq_props.jar を次のフォルダーに入れます。
WAS_ROOT/profiles/AppSrv01/installedApps/version1/MyAppEAR.ear
- pureQuery ランタイム・プロパティーを使用するすべてのモジュールの 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 ランタイム・プロパティーを指定できます。
この例では、データ・ソースでカスタム JCC プロパティー dataSourceName が設定されていることが前提となっています。
また、この例では、DS1 および DS2 というデータ・ソース名を持つ 2 つの異なる
データ・ソースが WebSphere Application Server 環境に存在します。
この例では、アプリケーションは次の 2 つのモジュールで構成されています。
- データ・ソース DS1 を使用する Web モジュール Web1
- データ・ソース DS2 を使用する EJB モジュール EJB1
データ・ソースごとに 2 つの pureQuery ランタイム・プロパティー・ファイルを作成します。
- pdq.DS1.properties
- pdq.DS2.properties
2 つの pureQuery Runtime ファイルが含まれている JAR ファイルを作成し、それを前述のようにインストール済みアプリケーション・ディレクトリーの下に入れます。
- アプリケーション・レベルのスコープのプロパティー・ファイルでの JNDI 変数の指定
WebSphere Application Server 8 は JNDI 変数をサポートしています。
pureQuery Runtime バージョン 3.2 以降では、WebSphere Application Server バージョン 8 の使用時に、アプリケーション全体に及ぶランタイム・プロパティー・ファイルのために JNDI 変数をサポートします。
これにより、すべてのアプリケーション用に 1 つの汎用ファイルをデプロイするだけで済み、各ファイル内にアプリケーション固有値を組み込む必要がないので、pdq.appwide.properties ファイルのデプロイが簡単になります。
WebSphere バージョン 8 以降と pureQuery Runtime バージョン 3.2 以降を併用すると、pureQuery ランタイム・プロパティー値に変数 ${appName} および ${moduleName} を指定できます。
これらの変数は、pureQuery ランタイム・プロパティー・ファイル内でサポートされています。
例えば、この変数とランタイム・プロパティー pureQueryXml を使用して pureQueryXML ファイルを指定できます。
pdq.pureQueryXml=C:\\capturedFiles\\${appName}-${moduleName}.pdqxml
- ロケーションがファイル・システムまたはリポジトリー
pureQuery ランタイム・プロパティー finalRepositoryProperties を使用して、データベース内のファイル・システムまたはリポジトリーを指定します。
プロパティーは、グローバル・レベル、データ・ソース・レベル、またはアプリケーション・レベルで指定できます。
pureQuery Runtime は、
finalRepositoryProperties プロパティーで指定されているロケーションからプロパティーを取得する際に、次の規則を適用します。
- finalRepositoryProperties からロードされたプロパティーは、それらをロードしているアプリケーションのみに影響します。
- pureQuery クライアント最適化または pureQuery Runtime で無効な finalRepositoryProperties からロードされたプロパティーは無視され、ロギングが使用可能になっていればログに記録されます。
この動作は、データ・ソース・レベルまたはアプリケーション・レベルのプロパティーと同じです。
- プロパティー finalRepositoryProperties の値は、それが最初の finalRepositoryProperties プロパティーで指定されたロケーションから取得された場合は無視されます。
pureQuery Runtime は、finalRepositoryProperties プロパティーを使用した複数レベルのリダイレクトをサポートしていません。
- finalRepositoryProperties プロパティーの指定に加え、pureQuery ランタイム・プロパティー propertiesGroupId を指定すると、アプリケーションが pureQuery データの取得に使用するデータベースで作成されたリポジトリーで実行時グループ・バージョンが指定されます。
propertiesGroupId プロパティーの値は、それがデータベースで作成されたリポジトリーで使用されない限り無視されます。リポジトリーが使用されているときは、リダイレクトされたプロパティー内で propertiesGroupId プロパティーの値を変更できません。
- finalRepositoryProperties プロパティーで指定されたデータベース内のリポジトリーから取得される pureQuery Runtime プロパティーに関しては、runtimeGroupActivationCheckInterval プロパティーと propertiesRefreshInterval プロパティーの値に応じて、プロパティーの自動リフレッシュが有効になります。
- runtimeGroupActivationCheckInterval プロパティーは、アクティブ化されたランタイム・グループのバージョンを pureQuery Runtime がいつ検査するかを制御します。
JVM で実行されるすべての pureQuery Runtime インスタンスに適用されるよう、このプロパティーを設定する必要があります。
- propertiesRefreshInterval プロパティーを使用すると、ランタイム・グループ・バージョンの pureQuery 情報の更新を検査するための特定の間隔を指定できます。
また、ランタイム・グループ・バージョンがアクティブ化されたときに行われる検査も含めて、ランタイム・グループ・バージョンの pureQuery 情報の更新に関する検査をすべて無効にするよう、プロパティーを設定することもできます。
これらのプロパティーについては、runtimeGroupActivationCheckInterval プロパティーと、propertiesRefreshInterval プロパティーを参照してください。
pureQuery Runtime の repositoryRequired プロパティーは、ファイル・システムまたはリポジトリーを使用しているときの pureQuery Runtime の動作を制御します。
WebSphere ロケーションの pureQuery でプロパティーを指定して、pureQuery Runtime の動作を制御します。
repositoryRequired プロパティーの値は、取得されるプロパティーの 1 つとして repositoryRequired プロパティーを設定することによりオーバーライドできます。