Umfang der pureQuery Runtime-Eigenschaften in einer WebSphere Application Server-Umgebung

Sie legen pureQuery Runtime-Eigenschaften fest, um den Betrieb von pureQuery Runtime zu steuern. Sie können den Umfang der pureQuery Runtime-Eigenschaften steuern, indem Sie die Eigenschaft an einer WebSphere-Position festlegen.
WebSphere ermittelt anhand der Position den Umfang der Eigenschaft und die Ausführungspriorität, wenn eine Eigenschaft an mehreren Positionen angegeben ist. Die Umfangsebenen für WebSphere haben die folgende Ausführungspriorität:
  • Anwendungsebene: Die pureQuery-Eigenschaften gelten für die WebSphere-Anwendung. Die pureQuery Runtime-Eigenschaften auf Anwendungsebene überschreiben sowohl die Einstellungen auf globaler Ebene als auch auf Datenquellenebene für dieselbe Eigenschaft. Andernfalls werden die pureQuery Runtime-Eigenschaften mit den globalen pureQuery-Eigenschaften und den pureQuery-Eigenschaften auf Datenquellenebene zusammengeführt.
  • Datenquellenebene: Die pureQuery-Eigenschaften gelten für alle Verbindungen, die aus der Datenquelle erstellt werden. Die Eigenschaftseinstellungen für die Datenquellenebene überschreiben die Eigenschaftseinstellungen für die globale Ebene, wenn auf beiden Ebenen dieselbe Eigenschaft definiert ist. Andernfalls werden die pureQuery Runtime-Eigenschaften mit den pureQuery-Eigenschaften für die globale Ebene zusammengeführt.
  • Globale Ebene: Die pureQuery-Eigenschaften gelten für alle Anwendungen auf dem WebSphere Application Server.

Sie können die pureQuery Runtime-Eigenschaft finalRepositoryProperties verwenden, um Laufzeiteigenschaften aus einem Dateisystem oder einem Repository in einer Datenbank abzurufen. Das Abrufen von Eigenschaften aus einem Dateisystem oder Repository wirkt sich auf die Ausführungspriorität aus.

Dateisystem oder Repository angeben

Bevor pureQuery Runtime Eigenschaften aus der über die Eigenschaft finalRepositoryProperties angegebenen Position abruft und festlegt, werden die pureQuery-Clientoptimierung und vorhandene pureQuery Runtime-Eigenschaften auf die Standardwerte zurückgesetzt. Alle auf der Datenquellenebene festgelegten Eigenschaften werden nicht gespeichert.

Die folgenden Beispiele zeigen, wie pureQuery Runtime-Eigenschaftseinstellungen ermittelt werden:
  • Wenn eine Eigenschaft auf mehreren Ebenen festgelegt ist, ermittelt die Ebene, welcher Wert verwendet wird. Wenn z. B. der Wert von captureMode in der globalen Eigenschaftendatei pdq.properties auf OFF gesetzt ist, wird der Wert in pdqProperties auf Datenquellenebene für die von der Anwendung verwendeten Datenquelle auf ON, NEW_STMTS oder LITE gesetzt und in pdq.appwide.properties auf Anwendungsebene auf OFF gesetzt. Die Einstellung auf Anwendungsebene hat Vorrang und der Wert der Eigenschaft captureMode wird auf OFF gesetzt.
  • Wenn pureQuery Runtime-Eigenschaften mit der Eigenschaft finalRepositoryProperties aus einem Dateisystem oder Repository abgerufen werden, hat - unabhängig von der Eigenschaftseinstellung auf der globalen, Datenquellen- oder Anwendungsebene - der Wert der Eigenschaften Vorrang, die sich an der von der Eigenschaft finalRepositoryProperties angegebenen Position befinden. Wenn z. B. captureMode in pdqProperties auf Datenquellenebene für die von der Anwendung verwendeten Datenquelle auf ON, NEW_STMTS oder LITE gesetzt und die Eigenschaft finalRepositoryProperties auch festgelegt ist, ruft pureQuery Runtime die Eigenschaften aus der Position ab, die durch die Eigenschaft finalRepositoryProperties angegeben ist. Wenn die Eigenschaft captureMode in den abgerufenen Eigenschaften nicht festgelegt ist, wird sie auf den Standardwert OFF gesetzt. Wenn der Wert der Eigenschaft captureMode als abgerufene Eigenschaft festgelegt ist, wird dieser Wert verwendet. Grundsätzlich gelten dieselben Regeln für alle nicht globalen Eigenschaften, mit Ausnahme der Eigenschaften, die die Position des "final repository" angeben.

Umfang der pureQuery Runtime-Eigenschaften in einer WebSphere-Umgebung steuern

In einer WebSphere-Umgebung legen Sie die pureQuery Runtime-Eigenschaften an anderen Positionen fest, um den Umfang der Eigenschaften zu steuern. Die Position beeinflusst auch die Ausführungspriorität, wenn eine Eigenschaft an mehreren Positionen festgelegt ist.

Position für globalen Umfang
Geben Sie die pureQuery Runtime-Eigenschaften in der Eigenschaftendatei pdq.properties an und nehmen Sie das die Datei enthaltende Verzeichnis in den Klassenpfad des WebSphere-JDBC-Providers auf.

Wenn Sie mit der Datei pdq.properties globale Eigenschaften festlegen, ordnen Sie die Datei pdq.properties im Klassenpfad des JDBC-Providers mit den pureQuery-JAR-Dateien an. Die Eigenschaften, die im Klassenpfad des JDBC-Providers festgelegt sind, gelten für alle Anwendungen, die den Treiber verwenden. Geben Sie hier keine Eigenschaften an, die für eine bestimmte Anwendung oder Datenquelle gelten.

Die pureQuery Runtime-Eigenschaft traceFile kann nur in einer globalen Datei pdq.properties angegeben werden.

Sie können auch globale pureQuery Runtime-Eigenschaften aus der Verwaltungskonsole für WebSphere Application Server festlegen:
  1. Wählen Sie den Link JDBC-Provider aus.
  2. Als JDBC-Provider wählen Sie entweder DB2 Universal JDBC Driver Provider oder DB2 Universal JDBC Driver Provider (XA) aus.
  3. Wenn es erforderlich sein sollte, dass Sie die pureQuery-JAR-Dateien dem Klassenpfad hinzufügen, fügen Sie das Verzeichnis, das die pureQuery-JAR-Dateien enthält, dem Feld Klassenpfad hinzu.
    Anmerkung: Schließen Sie nicht den Dateinamen pdq.properties ein.
  4. Wenden Sie die Änderungen auf den ausgewählten JDBC-Provider an und speichern Sie die Änderungen.
  5. Möglicherweise muss das Feld Klassenpfad für beide JDBC-Provider, DB2 Universal JDBC Driver Provider und DB2 Universal JDBC Driver Provider (XA), geändert werden.
  6. Speichern Sie Ihre Datei pdq.properties im Verzeichnis, das Sie im Feld Klassenpfad angegeben haben.

    Wenn sich die Datei pdq.properties in dem Verzeichnis befindet, kann die Eigenschaftendatei sowohl von WebSphere Application Server als auch von pureQuery Runtime gefunden werden.

  7. Je nach Anwendungsumgebung müssen Sie entweder den Anwendungsserver und/oder WebSphere Application Server erneut starten, damit die Änderungen wirksam werden.
Anmerkung: Wenn Sie die dynamische Ausführung von SQL-Anweisungen in der Datei pdq.properties in den statischen Modus ändern, muss der Anwendungsserver neu gestartet werden, um die Änderungen umzusetzen. Da die Eigenschaften auf alle Datenquellen angewendet werden, die den betreffenden JDBC-Provider verwenden, werden alle Anwendungen im selben Ausführungsmodus ausgeführt und alle erfassten SQL-Anweisungen werden in derselben pureQueryXML-Datei erfasst.
Position für Umfang auf Datenquellenebene

Geben Sie die angepasste JDBC-Treibereigenschaft pdqProperties für die WebSphere-Datenquelle an.

Benutzer können die pureQuery Runtime-Eigenschaften für jede Datenquelle festlegen. Die Datenquellenebene ist geeignet, wenn die Einstellung für jede einzelne Datenquelle unabhängig sein muss. Wenn die Anwendung z. B. mehrere eindeutige Datenquellen verwendet, erfasst jede Datenquelle das entsprechende SQL in ihrer eigenen pureQueryXML-Datei.

Wenn die Eigenschaften in der Datenquelle festgelegt sind, gelten sie für alle Anwendungen, die diese Datenquelle verwenden. Wenn Anwendungen eine Datenquelle gemeinsam nutzen, werden die erfassten SQL-Anweisungen daher in einer einheitlichen Datei für alle Anwendungen erfasst.

Bei jeder Änderung am Wert der Eigenschaft pdqProperties einer Datenquelle muss der Anwendungsserver erneut gestartet werden, damit er die neuen Werte verwenden kann.

Position für Umfang auf Anwendungsebene
Aktivieren Sie pureQuery Runtime-Eigenschaften für den Umfang auf Anwendungsebene mit mindestens einer der beiden folgenden Eigenschaftendateien in CLASSPATH der Anwendung:
  • pdq.appwide.properties
  • pdq.Name-der-Datenquelle.properties

    Name-der-Datenquelle ist der Wert der angepassten Eigenschaft dataSourceName von WebSphere DB2 Universal JDBC Driver, die in der Datenquelle festgelegt ist.

Die Datei pdq.appwide.properties gibt die anwendungsspezifischen pureQuery-Eigenschaften an. Alle Eigenschaftswerte, die in dieser Datei angegeben werden, werden auf alle Datenquellen angewendet, die die Anwendung verwendet.

Die Datei pdq.Name-der-Datenquelle.properties gibt die datenquellenspezifischen Eigenschaften für eine Anwendung an. Die in dieser Datei angegebenen Eigenschaften gelten nur für die von der Anwendung verwendete Datenquelle. Name-der-Datenquelle ist der Zeichenfolgewert der angepassten WebSphere-Eigenschaft dataSourceName für die Datenquelle. Diese angepasste Eigenschaft wird mit Schritten festgelegt, die den Schritten ähneln, die zum Festlegen der angepassten WebSphere-Eigenschaft pdqProperties verwendet werden.

Bei Anwendungen, die den Datenquellennamen Name-der-Datenquelle verwenden, haben die in pdq.Name-der-Datenquelle.properties angegebenen Eigenschaften Vorrang vor den durch pdq.appwide.properties angegebenen Eigenschaften.

Sie können eine JAR-Datei mit den pureQuery Runtime-Eigenschaftendateien erstellen und diese direkt in das Anwendungsinstallationsverzeichnis in einer WebSphere-Installation speichern. Dann aktualisieren Sie die Datei MANIFEST.MF aller Module, die die pureQuery Runtime-Eigenschaften nutzen.

Wenn eine Anwendung anwendungsspezifische Eigenschaftendateien wie pdq.appwide.properties oder pdq.Name-der-Datenquelle.properties verwendet und wenn die neuen Eigenschaften bei der Änderung von Eigenschaften wirksam werden sollen, müssen Sie den WebSphere-Verbindungspool bereinigen und die Anwendung erneut starten, anstatt den Anwendungsserver erneut zu starten, damit die neuen Eigenschaftswerte wirksam werden.

Im folgenden Beispiel befinden sich die pureQuery Runtime-Eigenschaften in der Datei pdq.appwide.properties und die dynamische Webprojekt-Datei (.war) ist Teil einer EAR-Datei. Nach der Implementierung der Anwendung in einer WebSphere-Umgebung enthält das Verzeichnis installedApps das Verzeichnis MyAppEAR.ear. Die folgenden Schritte beschreiben, wie pureQuery Runtime-Eigenschaften auf Anwendungsebene aktiviert werden:
  1. Erstellen Sie eine JAR-Datei, die pdq.appwide.properties enthält. In diesem Beispiel ist dies die Datei pdq_props.jar.
  2. Speichern Sie pdq_props.jar im folgenden Ordner:
    WAS-Ausgangsverzeichnis/profiles/AppSrv01/installedApps/version1/MyAppEAR.ear 
  3. Bearbeiten Sie die Datei MANIFEST.MF aller Module, die die pureQuery Runtime-Eigenschaften verwenden. In diesem Beispiel nutzt die WAR-Datei MyApp.war die Eigenschaften und MANIFEST.MF befindet sich im folgenden Verzeichnis:
    WAS-Ausgangsverzeichnis/profiles/AppSrv01/installedApps/version1/MyAppEAR.ear/MyAppEAR.war/META-INF/MANIFEST.MF 

    Fügen Sie den folgenden Eintrag Class-Path für die Datei pdq_props.jar hinzu:

    Class-Path: pdq_props.jar
    Der Eintrag befindet sich in einer einzigen Zeile in der Datei MANIFEST.MF und zwischen der Eigenschaft und dem Dateinamen steht ein Leerzeichen.
Wenn Module in einer Anwendung unterschiedliche Datenquellen verwenden, können Sie für jede Datenquelle pureQuery Runtime-Eigenschaften angeben. Im folgenden Beispiel wird davon ausgegangen, dass eine angepasste JCC-Eigenschaft dataSourceName für die Datenquelle definiert ist. Außerdem sind in diesem Beispiel zwei unterschiedliche Datenquellen mit den Datenquellennamen DS1 und DS2 in der WebSphere Application Server-Umgebung vorhanden. Die Anwendung im Beispiel besteht aus zwei Modulen:
  • Webmodul Web1, das Datenquelle DS1 nutzt
  • EJB-Modul EJB1, das Datenquelle DS2 nutzt
Sie erstellen zwei pureQuery Runtime-Eigenschaftendateien, eine für jede Datenquelle.
  • pdq.DS1.properties
  • pdq.DS2.properties

Sie erstellen eine JAR-Datei, die die beiden pureQuery Runtime-Dateien enthält, und speichern sie wie oben beschrieben im Anwendungsinstallationsverzeichnis.

JNDI-Variablen in Bereichseigenschaftendateien auf Anwendungsebene angeben

WebSphere Application Server 8 unterstützt JNDI-Variablen. pureQuery Runtime ab Version 3.2 unterstützt JNDI-Variablen für eine anwendungsweite Laufzeiteigenschaftendatei, wenn Sie WebSphere Application Server Version 8 verwenden.

Die Implementierung von pdq.appwide.properties-Dateien wird hierdurch vereinfacht, weil eine einzelne generische Datei für alle Anwendungen implementiert werden kann, ohne dass in jede Datei anwendungsspezifische Werte eingebettet werden müssen.

Wenn Sie WebSphere Version 8 oder höher mit pureQuery Runtime Version 3.2 oder höher verwenden, können Sie die Variablen ${appName} und ${moduleName} in pureQuery Runtime-Eigenschaftswerten angeben. Diese Variablen werden in der pureQuery Runtime-Eigenschaftendatei unterstützt. Sie können beispielsweise die Variablen mit der Laufzeiteigenschaft pureQueryXml verwenden, um eine pureQueryXML-Datei anzugeben.

pdq.pureQueryXml=C:\\capturedFiles\\${appName}-${moduleName}.pdqxml
Position ist Dateisystem oder Repository

Sie geben ein Dateisystem oder ein Repository in einer Datenbank mit der pureQuery Runtime-Eigenschaft finalRepositoryProperties an. Die Eigenschaft kann auf der globalen Ebene, Datenquellenebene oder Anwendungsebene angegeben werden.

pureQuery Runtime wendet die folgenden Regeln beim Abrufen von Eigenschaften aus einer Position an, die durch die Eigenschaft finalRepositoryProperties angegeben wird:
  • Eigenschaften, die von finalRepositoryProperties geladen werden, wirken sich nur auf die Anwendung aus, die sie lädt.
  • Eigenschaften, die von finalRepositoryProperties geladen werden und die für die pureQuery-Clientoptimierung oder pureQuery Runtime nicht gültig sind, werden ignoriert und protokolliert, wenn die Protokollierung aktiviert ist. Dieses Verhalten entspricht dem Verhalten bei Eigenschaften auf Datenquellenebene oder Anwendungsebene.
  • Der Wert für die Eigenschaft finalRepositoryProperties wird ignoriert, wenn sie aus der Position abgerufen wird, die von der ursprünglichen Eigenschaft finalRepositoryProperties angegeben wird. pureQuery Runtime bietet keine Unterstützung für mehrere Ebenen der Umleitung für die Eigenschaft finalRepositoryProperties.
  • Sie geben neben der Eigenschaft finalRepositoryProperties die pureQuery Runtime-Eigenschaft propertiesGroupId an, um die Laufzeitgruppenversion in einem Repository anzugeben, das in einer Datenbank erstellt ist und über das die Anwendung die pureQuery-Daten abruft.

    Der Wert für die Eigenschaft propertiesGroupId wird ignoriert, außer er wird für ein in einer Datenbank erstelltes Repository verwendet. Wenn ein Repository verwendet wird, können Sie den Wert der Eigenschaft propertiesGroupId in den umgeleiteten Eigenschaften nicht ändern.

  • Die pureQuery Runtime-Eigenschaften, die aus dem Repository in einer Datenbank abgerufen und durch die Eigenschaft finalRepositoryProperties angegeben werden, werden abhängig von den Werten der Eigenschaft runtimeGroupActivationCheckInterval und der Eigenschaft propertiesRefreshInterval für eine automatische Eigenschaftsaktualisierung aktiviert:
    • Die Eigenschaft runtimeGroupActivationCheckInterval steuert, wann pureQuery Runtime auf aktivierte Laufzeitgruppenversionen prüft. Die Eigenschaft muss so festgelegt werden, dass sie auf alle pureQuery Runtime-Instanzen angewendet werden kann, die in einer JVM ausgeführt werden.
    • Mit der Eigenschaft propertiesRefreshInterval kann ein bestimmtes Intervall angegeben werden, in dem auf Aktualisierungen von pureQuery-Informationen für eine Laufzeitgruppenversion geprüft wird. Die Eigenschaft kann auch so festgelegt werden, dass alle Überprüfungen auf aktualisierte pureQuery-Informationen für die Laufzeitgruppenversion inaktiviert werden, einschließlich der Überprüfung, die stattfindet, wenn eine Laufzeitgruppenversion aktiviert wird.

    Informationen zu den Eigenschaften finden Sie in runtimeGroupActivationCheckInterval (Eigenschaft) und propertiesRefreshInterval (Eigenschaft).

Die pureQuery Runtime-Eigenschaft repositoryRequired steuert das Verhalten von pureQuery Runtime, wenn ein Dateisystem oder Repository verwendet wird. Sie geben die Eigenschaft an einer WebSphere-Position an, um das pureQuery Runtime-Verhalten zu steuern. Der Wert der Eigenschaft repositoryRequired kann durch die Festlegung der Eigenschaft repositoryRequired als eine der abgerufenen Eigenschaften überschrieben werden.


Feedback