Sie müssen SQLJ-Profile mit dem Tool "db2sqljcustomize" anpassen und binden, bevor Sie die SQLJ-Anwendung im Anwendungsserver
installieren.
Vorbereitende Schritte
Zum Ausführen dieser Task benötigen Sie eine implementierte SQLJ-Anwendung, die noch nicht im Anwendungsserver installiert wurde. Wenn die Anwendung bereits im Anwendungsserver installiert ist, müssen Sie sie nach der Anpassung der Profile erneut installieren. Außerdem benötigen Sie serialisierte Profile für die SQLJ-Anwendung.
Für SQLJ-Anwendungen, die CMP (Container-managed Persistence, über Container realisierte Transaktionspersistenz) verwenden,
können Sie die Anwendung auf zwei Arten implementieren.
- Implementieren Sie die SQLJ-Anwendung im Anwendungsserver. Weitere Informationen finden Sie im Artikel zur Implementierung
von SQLJ-Anwendungen, die CMP verwenden.
- Implementieren Sie die SQLJ-Anwendungen mit dem Tool "ejbdeploy". Weitere Informationen finden Sie im Artikel zur Implementierung
von SQLJ-Anwendungen, die CMP verwenden, mit dem Tool "ejbdeploy".
Für SQLJ-Anwendungen, die BMP (Bean-managed Persistence, über JavaBeans realisierte Transaktionspersistenz)
verwenden, lesen Sie den Artikel zum Implementieren von SQLJ-Anwendungen, die BMP verwenden, Servlets und Session-Beans.
Informationen zu diesem Vorgang
Wenn Sie SQLJ-Anwendungen im Anwendungsserver nutzen möchten, müssen Sie die
SQLJ-Profile anpassen. Der Anpassungsprozess erweitert die Profile um Informationen, die für die
DB2-Datenbank spezifisch sind. Die Datenbank verwendet diese Informationen zur Laufzeit. Standardmäßig werden vier DB2-Pakete in der Datenbank erstellt, eines für jede Isolationsstufe.
Der Anwendungsserver unterstützt die Anpassung und Bindung der
SQLJ-Profile über die Administrationskonsole oder Scripting.
- Informationen zur Administrationskonsolenunterstützung finden Sie im Artikel zur Anpassung und Bindung von Profilen
für Structured Query Language in Java™-(SQLJ)-Anwendungen.
- Informationen zur Scripting-Unterstützung finden Sie im Artikel zur Befehlsgruppe für die Anwendungsverwaltung
für das Objekt "AdminTask".
Vorgehensweise
- Stellen Sie sicher, dass die erforderlichen Datenbanktabellen vorhanden sind, wie im Artikel zur
Implementierung von Datenzugriffsanwendungen beschrieben.
- Übertragen Sie die serialisierten Profile in die
z/OS-Umgebung, in der Sie Ihre Anwendung installiert haben. Alternativ können Sie die serialisierten Profile mit dem Java-Befehl
jar aus der JAR-Datei in Ihr installiertes EAR-Verzeichnis extrahieren.
- Fügen Sie die Position für die SQLJ-Profile und die JAR-Datei der Anwendung dem Klassenpfad Ihrer Umgebung hinzu.
- Stellen Sie sicher, dass die erforderlichen Datenbanktabellen vorhanden sind, wie im Artikel zur
Implementierung von Datenzugriffsanwendungen beschrieben.
- Optional: Wenn Ihre Anwendung nicht in einer Clusterumgebung ausgeführt wird, können Sie das Ant-Script
verwenden, um die Anpassung zu vereinfachen. Wenn Sie eine SQLJ-Stapelanpassung für eine EAR-Datei mit dem Tool "ejbdeploy" durchführen, erzeugt das Tool
ein Ant-Script mit dem Namen "Anwendungsname.ear.xml". Sie können dieses Script verwenden, um das DB2-Anpassungsprogramm für die serialisierten Profile in allen
EJB-JAR-Dateien für die zugeordnete EAR-Datei auszuführen. Das Script aktualisiert die JAR-Datei jeder Enterprise-Bean mit einem serialisierten Profil und ersetzt die JAR-Dateien in der vorhandenen
EAR-Datei durch die geänderten Versionen.
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
Das Tool ist:
- Ändern Sie die Werte des Datenbank-URLs und die Eigenschaften für den Benutzernamen und das Kennwort in der Datei "ejbdeploy.sqlj.properties". Diese Datei ist eine
Datei, die von allen Ant-Scripts verwendet wird, die vom Befehl "ejbdeploy" generiert werden. Das Script "ejbdeploy.sqlj.properties" definiert die globalen Eigenschaften für die folgenden Einstellungen:
- Datenbank-URL - db.url
- Benutzer - db.user
- Kennwort - db.password
Das Ant-Script verwendet die Eigenschaften URL, Benutzer-ID und Kennwort im serialisierten Profil zur Anpassung des Profils. Standardmäßig werden die Eigenschaften für das serialisierte Profil aus den globalen Eigenschaften erstellt.
- Führen Sie das Ant-Script mit dem Ziel properties aus. Beispiel:
ws_ant -buildfile Anwendungsname.ear.xml properties
Dieses Script erstellt die Eigenschaftendatei "
Anwendungsname.ear.properties".
Die Datei "
Anwendungsname.ear.properties" enthält Eigenschaften, die die Stanardnamen
für die Pakete festlegen, die den serialisierten
Profilen in der EAR-Datei entsprechen. Im Folgenden sehen Sie eine Beispieleigenschaftendatei:
url.MyEJB1.jar.DB2UDBNT_V8_1=jdbc:db2://localhost:50000/MyDB1
user.MyEJB1.jar.DB2UDBNT_V8_1=dbuser
password.MyEJB1.jar.DB2UDBNT_V8_1=dbpassword
pkg.MyEJB1.jar.DB2UDBNT_V8_1=TEST
url.MyEJB2.jar.DB2UDBNT_V8_1=jdbc:db2://localhost:50000/MyDB2
user.MyEJB2.jar.DB2UDBNT_V8_1=dbuser
password.MyEJB2.jar.DB2UDBNT_V8_1=dbpassword
pkg.MyEJB2.jar.DB2UDBNT_V8_1=WORK
- Verwenden Sie die DB2-Steuerzentrale, um die in der Datenbank installierten Pakete zu ermitteln. Die DB2-SQLJ-Anpassungsfunktion erfordert einen Datenbank-URL des Typs 4 im folgenden Format:
jdbc:db2://Hostname:Port/Datenbankname
Sie erfordert außerdem eine Benutzer-ID und ein Kennwort. Der Wert
für den Port ist 50000, sofern Sie ihn nicht bei der Installation
von DB2 ändern.
- Ändern Sie die von der Scriptdatei verwendeten Namen,
um sicherzustellen, dass die Namen der einzelnen Anpassungsprofile nicht in Konflikt mit Namen
von Paketen in der Datenbank geraten. Ant-Scripts, die für verschiedene EAR-Dateien generiert werden,
verwenden standardmäßig dieselben Paketnamen und überschreiben vorhandene Pakete, wenn die Namen nicht geändert werden. Überschriebene Pakete können
zu Laufzeitfehlern führen.
DB2 verwendet die ersten sieben Zeichen des Paketnamens. Die DB2-Anpassungsfunktion erstellt ausgehend von diesem Namen vier Pakete in der Datenbank. Wenn Sie beispielsweise den Namen
TEST angeben, erstellt die DB2-Anpassungsfunktion Pakete mit den Namen TEST1, TEST2, TEST3 und TEST4.
- Führen Sie das Ant-Script aus. Das Ant-Script aktualisiert die ursprüngliche EAR-Datei mit den geänderten serialisierten Profilen.
Fehler vermeiden: Stellen Sie sicher,
dass die Datei "db2jcc.jar" im Klassenpfad enthalten ist.
Diese Datei muss bei der Installation von DB2 Version 8 Fixpack 1 der Umgebungsvariablen "classpath" hinzugefügt worden sein.
gotcha
Im Folgenden sehen Sie einen Ant-Beispielbefehl:ws_ant -Dwork.dir=tmp
-Dscript.property.file=other.properties
-buildfile Anwendungsname.ear.xml
Für diese Angaben gilt Folgendes:
- -buildfile gibt die zu erstellende XML-Datei an.
- -Dscript.property.file gibt eine andere Eigenschaftendatei an. Dieser Parameter ist optional.
Wenn Ihr Ant-Script eine andere Datei anstelle von
"Anwendungsname.ear.properties" verwenden soll, geben Sie bei der Ausführung des Scripts die
Eigenschaft "Dscript.property.file" an.
- -Dwork.dir gibt ein temporäres Arbeitsverzeichnis für das Script an. Das Script erstellt und löscht Dateien sowie Unterverzeichnisse in diesem Arbeitsverzeichnis. Wenn das Arbeitsverzeichnis
bereits Dateien und Verzeichnisse enthält, die denselben Namen haben, wie die vom Script verwendeten Dateien und Verzeichnisse, werden
diese vom Script gelöscht oder überschrieben. Das Script erstellt und verwendet das Verzeichnis tmp als Arbeitsverzeichnis.
- Fahren Sie mit der Installation der Anwendung im Anwendungsserver fort.
- Führen Sie das Tool "db2sqljcustomize" aus, um die SQLJ-Profile für die JAR-Dateien jeder Enterprise-Bean anzupassen. Wenn Sie Ihren Implementierungscode generieren, werden serialisierte Profile (mit der Dateierweiterung
.ser) erstellt, die für Ihre Anwendung spezifisch sind.
Diese Profile befinden sich in demselben Verzeichnis wie Ihre
SQLJ-Dateien und müssen vor ihrer Verwendung an die Umgebung angepasst werden. Wenn Sie die DB2-SQLJ-Anpassungsfunktion für die serialisierten Profile ausführen, wird in der Datenbank statisches
SQL erstellt, das DB2 zur Laufzeit verwendet. In der Anpassungsphase werden vier Datenbankpakete mit statischem SQL erstellt, eines für jede
Isolationsstufe.
- Optional: Sie können mit dem SQLJ-Anpassungstool das Kontextcaching für
die Datenquellenverbindung Ihrer Anwendung aktivieren. DB2 V8.1
Fix Pack 6 enthält die neue Caching-Option mit dem Namen "db2optimize" für das "db2sqljcustomize".
Sie können diese Option verwenden, wenn Ihre Anwendung anstelle des Standardkontexts den expliziten Verbindungskontext verwendet.
Fehler vermeiden: - Die Unterstützung für das SQLJ-Kontextcaching erfordert DB2 mit IBM® JCC Driver oder Version 2.2 oder höher von
DB2 Universal
JDBC Driver mit APAR PQ87786.
- Falls Sie das Kontextcaching für eine Anwendung oder BMP-Bean nutzen möchten, die Verbindungen transaktionsübergreifend
zwischenspeichert, können Sie keine gemeinsam benutzten Verbindungen verwenden. Beim Aufruf der
Option "db2optimize" ist für die Verbindungsnutzung das Muster "abrufen/verwenden/schließen (get/use/close)" erforderlich. Der folgende Code demonstriert beispielhaft die falsche
Verbindungsnutzung für das Kontextcaching:
utx.begin();
cons =ds.getConnection(
request.getParameter("db.user"),
request.getParameter("db.password"));
cmctx1 = new CM_context(cons);
#sql [cmctx1] {DELETE FROM cmtest WHERE id=1};
utx.commit();
//Die nächste Anweisung prüft das Ergebnis:
#sql [cmctx1] cursor1 = {SELECT id, name FROM cmtest WHERE id=1};
Die Anweisung
Select löst in diesem Fall eine Ausnahme "Object closed" aus. Sie können diese Ausnahme vermeiden, indem Sie
die Verbindung schließen, bevor Sie die Transaktion festschreiben. Fordern Sie dann eine neue Verbindung und einen neuen Kontext an,
bevor Sie die Anweisung
Select ausführen.
gotcha
Der folgende Beispielcode zeigt die korrekte Syntax für die Ausführung der Option für das serialisierte Profil: sqlj -db2optimize SQLJTransactionTest.sqlj
db2sqljcustomize -url jdbc:db2://localhost:50000/DB-Name -user BENUTZERNAME -password KENNWORT
SQLJTransactionTest_SJProfile0.ser
- Führen Sie das Tool "db2sqljcustomize" aus, um die SQLJ-Profile anzupassen. Nach erfolgreicher Ausführung des Befehls "db2sqljcustomize" enthält das Verzeichnis, in dem aus Sie den Befehl abgesetzt haben, angepasste Profile. Wenn Sie den Befehl
"db2sqljcustomize" in dem Verzeichnis ausführen, das die serialisierten Profile enthält, die nicht angepasst wurden,
überschreiben die angepassten Versionen frühere Versionen, die dieselben Namen haben.
Die empfohlene Syntax für den Befehl "db2sqljcustomize" ist wie folgt:
db2sqljcustomize -url JDBC-URL -user BENUTZERNAME -password KENNWORT [-rootpkgname PAKETNAME] SERIALISIERTES_PROFIL1 SERIALISIERTES_PROFIL2 ...
Für diese Angaben gilt Folgendes:
- JDBC-URL ist die JDBC-URL für den Zugriff auf das DB2-System mit Ihren Tabellen.
- BENUTZERNAME ist ein gültiger Benutzername für das DB2-System mit Ihren Tabellen.
- KENNWORT ist das Kennwort für den angegebenen Benutzernamen.
- PAKETNAME ist der Name eines gültigen PDS-Members mit bis zu sieben Zeichen. Der Name aller vier Pakete, die die Anpassungsfunktion für Profile erstellt,
setzt sich aus diesem Namen und einer angehängten Zahl von
1 bis 4 zusammen. Falls Sie nur ein serialisiertes Profil anpassen, wird standardmäßig eine Kurzform des Namens des serialisierten Profils
verwendet. Der Parameter "-rootpkgname" ist in dem Fall nicht erforderlich. Wenn Sie mehrere serialisierte Profile mit demselben Befehl anpassen möchten, gibt es keinen Standardwert, sodass
der Parameter "-rootpkgname" angegeben werden muss.
- SERIALISIERTES_PROFIL# ist der Name des serialisierten Profils, das Sie anpassen.
- Wenn Sie mehrere serialisierte Profile mit demselben Befehl anpassen möchten, listen Sie die Dateien mit einem Leerzeichen als Trennzeichen
auf.
- Alternativ können Sie den Parameter -rootpkgname angeben, um mehrere serialisierte Profile mit einem einzigen Befehl anzupassen.
Anmerkung: Die folgenden Optionen ermöglichen eine differenziertere Steuerung des Anpassungsprozess:
- -automaticbind yes gibt an, dass die DB2-SQLJ-Anpassungsfunktion für die serialisierten
Profile ausgeführt werden soll, um statisches SQL in der Datenbank zu erstellen, das von der Datenbank zur Laufzeit verwendet wird. In der Anpassungsphase werden vier Datenbankpakete mit statischem SQL erstellt, eines für jede
Isolationsstufe.
- -onlinecheck NO und -bindoptions "VALIDATE RUN" geben Einstellungen für die Vermeidung von
Fehlern während einer Profilanpassung an und stellen eine erfolgreiche Anpassung sicher.
- Aktualisieren Sie die JAR-Datei für die Enterprise-Beans mit serialisierten Profilen.
- Verwenden Sie den Befehl jar, um die serialisierten Profile in Ihrer JAR-Datei
durch die angepassten Profile zu ersetzen.
Fehler vermeiden: Die angepassten Dateien müssen an eine Position gestellt werden, die im Anwendungsklassenpfad enthalten ist.
In Ihrer JAR-Datei müssen sie vor den nicht angepassten serialisierten Profilen angegeben werden. Falls Sie die serialisierten Profile in Ihrer JAR-Datei ersetzen möchten, stellen Sie sicher, dass die Verzeichnisstruktur der Profile
erhalten bleibt.
gotcha
- Packen Sie die JAR-Datei für die Enterprise Bean, Servlets und serialisierten Profile in eine EAR-Datei.
- Installieren Sie die Anwendung im Anwendungsserver.