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. Wenn Sie eine Eigenschaft an mehreren Positionen festlegen, ermittelt pureQuery Runtime, welcher Wert basierend auf der Position Ausführungspriorität hat.
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-Eigenschaftseinstellungen auf der Anwendungsebene überschreiben die Einstellungen auf der globalen Ebene und auf der Datenquellenebene für dieselbe Eigenschaft. Andernfalls werden die pureQuery Runtime-Eigenschaften mit den pureQuery-Eigenschaften für die globale Ebene und die 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 von WebSphere Application Server.

Mit der pureQuery Runtime-Eigenschaft finalRepositoryProperties können Sie Laufzeiteigenschaften aus einem Dateisystem oder Repository in einer Datenbank abrufen. 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 abgerufen und festgelegt werden, werden die pureQuery-Clientoptimierung und vorhandene pureQuery Runtime-Eigenschaften auf die Standardwerte zurückgesetzt. Alle auf der Datenquellenebene festgelegten Eigenschaften werden nicht gespeichert. Eigenschaften, die als globale pureQuery-Eigenschaften abgerufen und gesetzt werden, sind nicht betroffen.

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 der Wert der an der Position angegebenen Eigenschaft captureMode unabhängig von der Eigenschaftseinstellung auf der globalen, Datenquellen- oder Anwendungsebene Vorrang. Wenn z. B. captureMode in pdqProperties auf Datenquellenebene für die von der Anwendung verwendeten Datenquelle auf ON, NEW_STMTS oder LITE gesetzt ist und wenn 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.

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 die Datei 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.

Definieren Sie globale pureQuery Runtime-Eigenschaften aus der Verwaltungskonsole von WebSphere Application Server:
  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. Fügen Sie erforderlichenfalls das Verzeichnis, das die pureQuery-JAR-Dateien enthält, zum 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 die Datei pdq.properties sich in diesem Verzeichnis befindet, können sowohl WebSphere Application Server als auch pureQuery Runtime die Eigenschaftendateien finden.

  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 nutzen. 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.
Position ist Dateisystem oder Repository

Sie geben ein Dateisystem oder 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 unterstützt nicht 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 der durch die Eigenschaft finalRepositoryProperties angegebenen Position abgerufen werden, werden nur für die automatische Eigenschaftenaktualisierung aktiviert, wenn die Eigenschaft propertiesRefreshInterval eine der aus der Position abgerufenen Eigenschaften ist und auf einen positiven Wert gesetzt ist. Jede Anwendung kann eine andere Eigenschaft propertiesRefreshInterval haben, die in den aus finalRepositoryProperties abgerufenen Eigenschaften definiert ist.

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