Letzte Aktualisierung 11.01.2002
Dieses Dokument wird regelmäßig aktualisiert. Die jeweils neueste Version finden Sie auf der Seite WebSphere Application Server InfoCenter unter der Adresse www.ibm.com/software/webservers/appserv/infocenter.html.
Diese Releaseinformationen gelten ausschließlich für Enterprise Services. Eine Beschreibung von Enterprise Services finden Sie unter dem Thema What are Enterprise Services? im Enterprise Edition InfoCenter.
Für die folgenden Produkte stehen separate Releaseinformationen zur Verfügung:
Vorbedingungen
Installieren von Enterprise Services
Business Process Beans (BPBeans) - Technologievorschau
Defekte und Lösungsmöglichkeiten
Auf der folgenden Website sind die Softwareprodukte aufgelistet, die für WebSphere Application Server erforderlich sind oder für dessen Verwendung unterstützt werden:
www.ibm.com/software/webservers/appserv/doc/latest/prereq.html
Hinweis: Dieses Release von Enterprise Services unterstützt nicht CICS Universal Clients & Transaction Gateway.
Die vollständigen Installationsanweisungen finden Sie im Enterprise Services Installation Guide (pdf).
Die meisten Installationen von Enterprise Services (mit Ausnahme von CORBA C++ Clients) erfordern, dass Sie zuerst den Server oder Client von Advanced Edition installieren, um so eine J2EE-Basis bereitzustellen. Zur Installation von Version 4.1 Enterprise Services muss die Basis Ihrer Advanced Edition die Ebene der Version 4.0.2 haben. Diese Ebene entspricht der Version 4.0 (oder 4.0.1) plus. FixPack 2 Advanced Edition Version 4.0 wird mit der Enterprise Edition geliefert. Sie können FixPack 2 von folgender Webseite herunterladen:
http://www.ibm.com/support/manager.wss?rs=180&rt=0&org=SW&doc=4001038.
Bei der Deinstallation von WebSphere Application Server werden sowohl Advanced Edition als auch Enterprise Services aus Ihrem System entfernt. Es gibt kein separates Deinstallationsprogramm für Enterprise Services. Denken Sie daran, dass Sie nach der Installation von Enterprise Services keine Möglichkeit haben, Advanced Edition FixPack 2 zu deinstallieren (oder "zurückzusetzen").
Im Gegensatz zur Installation von Advanced Edition werden die Beispiele bei der "typischen" Installation von Enterprise Services nicht installiert. Um die Beispiele für Enterprise Services zu installieren, wählen Sie die Installationsoption "Angepasst", und wählen Sie dann "Beispiele" aus der Optionsliste.
BPBeans ist eine neue Technologie zum Erstellen von Java-Komponenten, die Paradigmen der erweiterten Transaktionsverarbeitung verwenden. Mit BPBeans können die folgenden Tasks ausgeführt werden:
BPBeans ist eine Technologievorschau. Das bedeutet, dass die Technologie für Demonstrationen oder Projekte zur "Prüfung der Erfolgschancen" eingesetzt werden kann. BPBeans können in einer Produktionsumgebung nicht verwendet werden. BPBeans können unter Windows NT Version 4 mit SP4 oder später oder unter Windows 2000 installiert werden. Diese Technologievorschau umfasst Ausrüstung, Laufzeit und Dokumentation der Anwendungen. Sie steht nur in amerikanischem Englisch zur Verfügung.
Um die BPBeans-Technologie zu installieren, führen Sie den Befehl
Windows/BPB_tech_preview/BPBeansSetup.exe
aus, der sich auf der CD Enterprise
Edition Server befindet. Mit diesem Befehl werden Ausrüstung, Laufzeit und Dokumentation der Anwendungen installiert.
Die folgenden Abschnitte enthalten Informationen zu bekannten Defekten und Lösungsmöglichkeiten sowie ergänzende Informationen zu Abschnitten im Enterprise Edition InfoCenter. Soweit nicht anders angegeben, gelten die Defekte und Lösungsmöglichkeiten für alle unterstützten Plattformen.
Installation
Brücke von ActiveX zu EJB
Business Rule Beans (BRBeans)
CORBA C++-SDK
Extended Messaging Support
Probleme mit der Landessprache
In Installationsanzeigen, die ein Textfeld enthalten, kann nach Erreichen des Textfeldes die Tabulatortaste nicht weiterverschoben werden, so dass die nächste Anzeige nicht erreicht werden kann.
Lösungsmöglichkeit: Verwenden Sie eine Zeigereinheit, um Weiter anzuklicken.
Bei der Installation unter Solaris (Bildschirm X11) kann das kleine Fenster, in dem Sie Ihre Auswahl treffen können, hinter dem größeren Hintergrundfenster verschwinden, wenn dieses ausgewählt wird.
Lösungsmöglichkeit: Bringen Sie das kleine Fenster wieder in den Vordergrund, indem Sie Alt+Tabulatortaste drücken und dann das kleine Fenster anklicken.
Die CallByName()-Funktion in Visual Basic wird mit der Brücke von ActiveX zu EJB verwendet, wenn die Groß- und Kleinschreibung des Aufrufs einer Java-Methode nicht garantiert werden kann (z. B. Visual Basic ändert myJavaObject.create in myJavaObject.Create um). Dies wird in der Microsoft Knowledge Base in Artikel Q194418 unter folgender Adresse dokumentiert: http://support.microsoft.com/support/kb/articles/Q194/4/18.ASP:
"Wenn ein Fehler während einer Prozedur des ActiveX-Servers auftritt und die Prozedur mit einer CallByName()-Funktion von einem Client aufgerufen wird, meldet der Client Fehler 440, unabhängig von der ursprünglichen Fehlernummer."
Sämtliche Java-Ausnahmebedingungen, die normalerweise als Fehler 0x6003 mit Stack-Trace von Java in der Fehlerbeschreibung ausgegeben werden, werden als Fehler 440 mit den Worten "Automationsfehler" in der Fehlerbeschreibung ausgegeben.
Lösungsmöglichkeit: Führen Sie einen der folgenden Schritte aus:
Der folgende Fehler wird angezeigt, wenn im Zeichenfolgebereich von XJBInit() ungültige Parameter auftreten:
0x6002 "XJBJNI::Init() konnte VM nicht erstellen" beim Aufruf von XJBInit().
Ist die C++-Protokollfunktion aktiviert, ist der ungültige Parameter im Aktivitätenprotokoll aufgeführt.
Die Brücke von ActiveX zu EJB stellt für Protokollierung und Trace zwei Formate bereit: C++ und Java.
C++-Aktivitätenprotokoll
Das C++-Aktivitätenprotokoll enthält JNI-Fehler, Fehlernachrichten der Java-Konsole
und XJB-Initialisierungsnachrichten. Diese Protokoll eignet sich am besten zur Ermittlung von
XJBInit()-Fehlern und ungewöhnlichen Ausnahmebedingungen, die nicht aus der Java-Umgebung
stammen.
Um das C++-Aktivitätenprotokoll aktivieren zu können, muss der CORBA C++-SDK-Client installiert werden. Danach kann die Brücke von ActiveX zu EJB das Vorhandensein des SDK erkennen und die Protokollierung automatisch aktivieren. Einzelheiten zu den Protokolleinstellungen finden Sie im Abschnitt "Corba-Unterstützung > Entwickeln eines C++-CORBA-Servers > Festlegen der Laufzeitmerkmale" im Enterprise Edition InfoCenter.
Standardmäßig wird das Protokoll im Verzeichnis
WAS_HOME\Enterprise\service
erstellt. Für Serviceprogramme wie Active
Server Pages wird das Protokoll im Verzeichnis C:\WINNT\SYSTEM32\service
erstellt. Das Standardprotokollverzeichnis kann mit Hilfe der Umgebungsvariablen SOMCBASE geändert werden, die durch launchClientXJB.bat
und
setupCmdLineXJB.bat
im Verzeichnis WAS_HOME\Enterprise\bin
festgelegt wird.
Um zum Beispiel die Merkmaldatei zu aktivieren, stellen Sie die Umgebungsvariable SOMCBASE wie folgt ein (für Active Server Pages müssen Sie eine Systemumgebungsvariable verwenden):
set SOMCBASE= C:\WebSphere\AppClient\Enterprise
Nach dem Neustart der Anwendung wird die Protokolldatei activitycpp.log
im
Verzeichnis C:\WebSphere\AppClient\Enterprise\service
erstellt. Um das Protokoll
anzuzeigen, öffnen Sie ein Befehlsfenster, wechseln in das Verzeichnis
C:\WebSphere\AppClient\Enterprise\service
und geben dann den folgenden Befehl
ein:
launchClientXJB showlogcpp activitycpp.log
Um die Protokollierung zu sperren, sobald das C++-SDK installiert ist, benennen
Sie die Datei SOMRSBSM.DLL
um, die sich im Verzeichnis
WAS_HOME\Enterprise\bin
befindet. Beachten Sie, dass das C++-SDK nach
dem Umbenennen dieser DLL-Datei nicht mehr verwendet werden kann.
Java-Traceprotokoll
Das Java-Traceprotokoll enthält Informationen, die für das Debug von Methodenaufrufen,
von Klassensuchfunktionen und von Problemen bei der Formatumwandlung von Argumenten verwendet werden können.
Da der Java-Abschnitt der Brücke die Funktionalität der Schnittstelle COM IDispatch
widerspiegelt, ähneln die Informationen im Traceprotokoll denen, die Sie von einer
IDispatch-Schnittstelle erwarten. Um das Traceprotokoll verstehen zu können, ist ein
grundlegendes Verständnis von IDispatch erforderlich.
Um Benutzerprotokollierung zu aktivieren, fügen Sie dem
XJBInit()inputstringarray
die folgenden Parameter hinzu:
"-DtraceString=com.ibm.ws.client.xjb.*=event=enabled" "-DtraceFile=C:\MyTrace.txt"
Falls z. B. Probleme mit dem folgenden Visual Basic-Code auftreten:
Dim oInt as Object
Dim strHexValue as String
Set oInt = oXJB.FindClass("java.lang.Integer")
strHexValue = oInt.toHexString(24579)
Der sich ergebende Trace für die fehlerhafte Zeile könnte folgendermaßen aussehen:
[01.07.31 11:17:13:815 CDT] 6b2d2635 JDispatch E dispGetIDsOfNames: Retrieving DISPID from Method or Field. ClassID:-102|ObjectID:0|Name:FindClass|Result DISPID:60 [01.07.31 11:17:13:875 CDT] 6b2d2635 JDispatch E dispInvoke: Retrieving Member from DISPID and Arg Types. ClassID:-102|ObjectID:0|DISPID:60|Arg Sig:Ljava.lang.String;|Found Member:public static java.lang.Class com.ibm.ws.client.xjb.JClassFactory.FindClass(java.lang.String) throws java.lang.Exception [01.07.31 11:17:13:946 CDT] 6b2d2635 JClassFactory E
FindClass complete. ClassName:java.lang.Integer|ClassID:-103 [01.07.31 11:17:13:946 CDT] 6b2d2635 JDispatch E dispInvoke: Method.invoke() Succeeded. Result:
class java.lang.Integer [01.07.31 11:17:13:956 CDT] 6b2d2635 JDispatch E dispGetIDsOfNames: Retrieving DISPID from Method or Field. ClassID:-103|ObjectID:0|Name:toHexString|Result DISPID:115 [01.07.31 11:17:13:986 CDT] 6b2d2635 JDispatch E dispInvoke: Retrieving Member from DISPID and Arg Types. ClassID:-103|ObjectID:0|DISPID:115|Arg Sig:S|Found Member:NOT FOUND
Es folgt eine Erklärung des obigen Traces:
Zeile 1: | dispGetIDsOfNames() wurde für eine interne Klasse (Nr. -102) aufgerufen und sucht nach der Methode FindClass. Es wurde die DISPID (Dispatch-ID) 60 zurückgegeben. |
Zeile 2: | dispInvoke() wurde für dieselbe interne Klasse (Nr. -102) aufgerufen, um die der DISPID 60 zugeordnete Methode mit der Argumentkennung "Ljava.lang.String;" auszuprobieren und aufzurufen (Die interne Formulierung von Java für java.lang.String. Dies ist das Format der Ausgabe von javap.exe.). Das Member wurde gefunden und seine Definition im Protokoll angezeigt. |
Zeile 3: | Die Methode FindClass() wurde ausgeführt und gab die ClassID -103 für java.lang.Integer zurück. |
Zeile 4: | dispInvoke: Gibt die resultierende Klasse java.lang.Integer zurück. |
Zeile 5: | Die Methode toHexString wurde in dispGetIDsOfNames gefunden und gab die DISPID 115 zurück. |
Zeile 6: | dispInvoke konnte jedoch das Member mit der DISPID 115 mit der Argumentkennung "S" nicht finden ("S" ist die interne Formulierung von Java für "short"). |
Argumentkennungen (oder Deskriptoren) werden folgendermaßen definiert:
BaseType Zeichen | Typ | Interpretation |
B | byte |
signiertes Byte |
C | char |
Unicodezeichen |
D | double |
Gleitkommawert doppelter Genauigkeit |
F | float |
Gleitkommawert einfacher Genauigkeit |
I | int |
Integer |
J | long |
langes Integer |
L<classname>; | reference |
eine Instanz der Klasse <classname> |
S | short |
kurz mit Vorzeichen |
Z | boolean |
true oder false |
[ | reference |
eine Feldgruppendimension |
Weitere Einzelheiten finden Sie in Kapitel 4.3.2, Felddeskriptoren in der Sun VM Specification unter der Adresse: http://java.sun.com/docs/books/vmspec/2nd-edition/html/VMSpecTOC.doc.html
Im Mustercode und in der Dokumentation für die Brücke von ActiveX zu EJB werden sowohl der
Schrägstrich als auch der umgekehrte Schrägstrich im Java-Verzeichnis und im Verzeichnis
WAS_HOME angezeigt. Sowohl Windows NT als auch Windows 2000 können beide Arten von Schrägstrichen behandeln. Zum Beispiel ist der Pfad C:/WebSphere/AppClient\java\jre
korrekt.
In der Brücke von ActiveX zu EJB steht für die Anzeige von Java-System.out-Nachrichten keine Konsole zur Verfügung. Um diese Nachrichten bei aktivem Standalone-Client-Programm (wie Visual Basic) anzeigen zu können, leiten Sie die Ausgabe in eine Datei um. Zum Beispiel starten Sie Ihre Clientanwendung mit Hilfe des folgenden Befehls:
launchClientXJB.bat MyProgram.exe > output.txt
Um diese Nachrichten bei Ausführung eines Serviceprogramms wie Active Server Pages anzeigen
zu können, ändern Sie das System.out-Objekt OutputStream
von Java in
FileOutputStream
. Zum Beispiel würden Sie in VBScript folgendes tun:
' Umleiten von system.out in eine Datei ' Annehmen, dass oXJB ein initialisiertes Objekt XJB.JClassFactory ist Dim clsSystem Dim oOS Dim oPS Dim oArgs
' Abrufen der Klasse System Set clsSystem = oXJB.FindClass("java.lang.System")
' Erstellen eines Objekts FileOutputStream Set oOS = oXJB.NewInstance(oXJB.FindClass("java.io.FileOutputStream"), "c:\sysout.txt")
' Erstellen eines Objekts PrintStream und ihm Ihr FileOutputStream zuordnen Set oArgs = oXJB.GetArgsContainer oArgs.AddObject "java.io.OutputStream", oOS Set oPS = oXJB.NewInstance(oXJB.FindClass("java.io.PrintStream"), oArgs)
' Festlegen von OutputStream des Systems auf die Datei clsSystem.setOut oPS
Wenn Sie eine andere Datenbank als DB2 mit den BRBeans-Beispielen verwenden (Movie Sample oder Simple Sample), müssen Sie die generierte Datei Table.ddl modifizieren. Genauere Informationen finden Sie im Abschnitt Modifizieren der Datei Table.ddl zur Verwendung von anderen Datenbänken als DB2.
Eine neue BRBeans Jar-Datei mit Namen BRBeansInformix731.jar wurde in das Verzeichnis <WAS_HOME>/Enterprise/BRBeans für die Unterstützung von Informix Version 7.3.1 hinzugefügt. Sie müssen diese Jar-Datei verwenden, wenn Sie BRBeans auf einem Server ausführen möchten, der auf eine Informix 7.3.1 Datenbank zugreift. Verwenden Sie für Informix Version 9.2.1 weiterhin die Datei BRBeansInformix.jar.
Um BRBeans auf Informix Version 7.3.1 auszuführen, benötigen Sie ebenfalls einen Fix für Informix Programmfehler Nummer 153465. Dies ist ein Fix für den Informix JDBC-Treiber und ist mit Version 2.21 und höher des Treibers verfügbar. Ohne diesen Fix können BRBeans Enterprise-Beans ihren Status nicht in der Datenbank speichern und BRBeans werden nicht funktionieren.
Wenn Auswerten angegeben wurde, werden vier Warnungen bei der Implemetierung von BRBeans angezeigt. Diese Warnungen gelten für createRule. Sie geben an, dass arg1 und der Rückgabetyp serialisierbar sein müssen. Sie können diese Warnungen ignorieren.
Beim Importieren von Regeln aus einem XML-Dokument, das mit Hilfe der Exportfunktion der BRBeans-Anwendung zur Verwaltung von Regeln erstellt wurde, gibt der XML-Parser Fehlernachrichten zurück, die anzeigen, dass das Dokument nicht syntaktisch analysiert werden kann und dass keine Regeln importiert worden sind. Dies tritt nur dann auf, wenn ein mit der Anwendung zur Verwaltung von Regeln (nicht mit dem Befehlszeilendienstprogramm) erstelltes Dokument importiert wird. Die Ursache liegt darin, dass die Exportfunktion der Anwendung zur Verwaltung von Regeln dem exportierten XML-Dokument nicht die richtigen Header- und Trailer-XML-Tags hinzufügt.
Lösungsmöglichkeit: Die folgende Verfahrensweise:
<!DOCTYPE brb SYSTEM "brb.dtd"> <brb>
Fügen Sie am Ende der Datei die folgende Zeile ein:
</brb>
Wegen eines Programmfehlers im JDBC-Treiber Merant SequeLink setzt die Methode clearParameters die Parameter nicht richtig zurück, um die Wiederverwendung vorbereiteter Anweisungen zu ermöglichen.
Lösungsmöglichkeit: Bei Verwendung des Treibers Merant SequeLink mit einer Datenbank sperren Sie die vorbereitete Anweisung, die in der BRBeans-Datenquelle in den Cache gestellt wird, indem Sie die Cache-Größe der Anweisung (Statement Cache Size) auf 0 festlegen. Bei der Verwendung von Advanced Edition ist das Merkmal Cache-Größe der Anweisung eines der Verbindungs-Pooling-Merkmale der Datenquelle. Bei der Verwendung von Advanced Developer Edition ist das Merkmal Cache-Größe der Anweisung eines der Merkmale für die Datenquelle.
Wenn Sie eine Regel, die abhängige Regeln besitzt, an einem Auslösepunkt auslösen, dessen Attribut Base Folder auf einen Wert ungleich Null festgelegt ist, wird eine NullPointerException zurückgegeben.
Lösungsmöglichkeit: Stellen Sie kein Attribut Base Folder eines Auslösepunktes, an dem Regeln mit abhängigen Regeln ausgelöst werden, ein.
Der Netscape-Browser startet nicht nach der Anforderung von Hilfe über eine Benutzerschnittstelle auf einer Solaris-Plattform.
Lösungsmöglichkeit: Legen Sie eine gültige Ländereinstellung für Ihre Sitzung fest, und inaktivieren Sie die Zugriffssteuerung.
Führen Sie die folgenden Schritte aus, um eine gültige Ländereinstellung festzulegen:
locale -a
Geben Sie folgenden Befehl ein, um eine Ländereinstellung festzulegen, wobei locale eine der gültigen Ländereinstellungen ist:
export LANG=locale
Geben Sie Folgendes ein, um die Ländereinstellung beispielsweise auf amerikanisches Englisch festzulegen:
export LANG=en_US
Geben Sie folgenden Befehl ein, um die Zugriffssteuerung zu inaktivieren:
xhost +
Führen Sie die folgenden Schritte aus, um die Datenbank CDS, die durch C++-Server verwendet wird, und den C++-Location Service-Dämon somorbd zu initialisieren:
cdspop
aus, um die Datenbank CDS, die sich im Verzeichnis SOMCBASE/data befindet, zu initialisieren.
Wenn Sie die aktuelle Version von RMIC mit einer Java-Klasse ausführen, die Getter und Setter enthält, und sind diese Getter und Setter entsprechend der JavaBean-Namenskonventionen benannt, generiert RMIC doppelte Getter und Setter.
Lösungsmöglichkeit: Ändern Sie die Java-Klasse so, dass die Getter und Setter umbenannt werden.
Das folgende Codefragment aus der Java-Klasse "Book" soll als Beispiel dienen:
public class Book implements Serializable { private String BookTitle = null; private double price = 0.0; private int salesCount; public Book() { salesCount = 0; } public void setBookTitle( String name ) { bookTitle = name; } public String getBookTitle() { return( bookTitle ); } ...
Der obige Code enthält einen Getter und einen Setter für BookTitle. Getter und Setter folgen der JavaBeans-Namenskonvention: get<var> und set<var>. Dies führt für RMIC zu Fehlern. Die Tatsache, dass die Klassenvariablen als privat deklariert sind, führt dazu, dass RMIC IDL mit einer allgemein zugänglichen Deklaration und mit einer Attributdeklaration für jede Variable generiert, zum Beispiel:
public long a; attribute long a;
Wird IDLC zum Generieren von Code aus der IDL verwendet, werden für jede Klassenvariable zwei Getter und zwei Setter erstellt, davon die eine allgemein zugänglich und die andere geschützt, und der Code wird nicht kompiliert.
Lösungsmöglichkeit: Benennen Sie die Getter und Setter in der Java-Klasse so um, dass sie
der JavaBean-Namenskonvention nicht mehr entsprechen.
Es folgt eine Möglichkeit der Nutzung von sendBookTitle
und receiveBookTitle
:
... salesCount = 0; } public void sendBookTitle( String name ) { bookTitle = name; } public String receiveBookTitle() ...
Die Dokumentation der CORBA-Unterstützung im Enterprise Edition InfoCenter sagt aus, dass die Bibliothek Valuetype Implementierungen der C++-Wertetypen für die allgemein gebräuchlichen einfachen Java-Datentypen enthält. Dies ist nicht korrekt.
Die Bibliothek Valuetype unterstützt viele der Basisklassen im Paket java.lang wie Integer, Short und Long. Diese sind nicht mit den einfachen Java-Typen wie short, long und integer gleichzusetzen. In der Liste der in der C++-Bibliothek Valuetype implementierten Methoden im InfoCenter sind die verschiedenen java.lang-Klassen, die bereitgestellt werden, korrekt angegeben. Die Liste der Zuordnungen von IDL-Typen zu CORBA-Typen sollten Sie jedoch ignorieren, da diese Liste für die Bibliothek Valuetype nicht relevant ist.
Die Methoden printStackTrace(java.io.PrintStream)
und
printStackTrace(java.io.PrintWriter)
von java::lang::Throwable
werden in der Bibliothek Valuetype nicht unterstützt, da die Übergabe von Stack-Trace von Java
in die C++-Laufzeit Probleme bereitet.
Die konkreten Implementierungen der Argumente zu den printStackTrace-Methoden
java.io.PrintStream
und java.io.PrintWriter
sind nicht vorhanden.
Die stream- und writer-Wertetypen in der Bibliothek Valuetype (das sind OutputStream,
FilterOutputStream, PrintStream, Writer und PrintWriter) sind abstrakte Klassen, die in Ihren
C++-Clientprogrammen nicht als lokale Ausgabedatenströme verwendet werden können.
Die Byte_init-Methode create__()
ist in der Bibliothek Valuetype nicht
vorhanden.
Ignorieren Sie alle Verweise auf diese Methode in der Dokumentation zur CORBA-Unterstützung.
Beachten Sie im InfoCenter-Artikel mit der Überschrift "Erstellen Ihrer eigenen C++-Wertetypen" die Korrekturen zu den folgenden Befehlen:
In Schritt eins lautet der Befehl:
rmic -idl java.util.Hashtable
In Schritt zwei lautet der Befehl:
idlc .... java/util/Hashtable.idl
Um Extended Messaging Support nutzen zu können, laden Sie die neueste Version von MQSeries supportPac MA88 herunter, und installieren Sie sie: MQSeries-Klassen für Java und MQSeries-Klassen für Java Message Service: www.ibm.com/software/ts/mqseries/txppacs/ma88.html
Installieren Sie Version 1.1.3 vom 29.08.2001 oder später.
Sowohl in der InfoCenter-Dokumentation als auch in der MQSeries-Dokumentation wird
vorgeschlagen, Jar-Dateien und Bibliotheksdateien aus der Verzeichnisstruktur unter
MQSeries\java
in verschiedene WebSphere-Verzeichnisse zu kopieren. Diese
Konfiguration ist zwar funktionstüchtig, wird aber aus Gründen der Servicefreundlichkeit nicht
empfohlen. Upgrades und Patches zu MQSeries werden nicht wie gewünscht wirksam. Eine
geeignetere Methode besteht darin, diese Jar-Dateien im Klassenpfad des Custom-Services für den
Service Extended Messaging Support einzuschließen. Die einzuschließenden MQSeries Jar-Dateien
sind com.ibm.mq.jar
und com.ibm.mqjms.jar
.
Falls Sie Advanced Developer Edition (AEd) verwenden, müssen Sie außerdem die Jar-Dateien jedes erforderlichen Namensproviders im Klassenpfad des Ressourcenproviders angeben. Unter Defekt 106821.RN finden Sie dazu weitere Informationen.
Da Advanced Edition for Developers (AEd) keinen persistenten Namespace bereitstellt, müssen Sie beim Konfigurieren von Extended Messaging Support mit AEd einen zweiten Namensprovider verwenden.
Lösungsmöglichkeit: Führen Sie die folgenden Schritte aus, um den Provider des Dateisystems als zweiten Namensprovider zu konfigurieren:
Hinweis: Der Namensprovider des Dateisystems nutzt das Systemmerkmal "file.separator" als Separator. Achten Sie auf Windows-Plattformen darauf, dass ein Name, der normalerweise jms/mq/Destination lautet, als jms\mq\Destination erscheint. Möglicherweise muss der einzelne Backslash (\) durch zwei Backslashes (\\) ersetzt werden.
JMSAdmin.config
.
C:\temp\JNDI-Directory
an.
JMSAdmin.bat
aus, und binden Sie Ihre ConnectionFactories und
Warteschlangen/Abschnitte (Queues/Topics) wie gewohnt.
http://localhost:9090/admin
).
MQSeriesInstallDir\java\lib\fscontext.jar;
MQSeriesInstallDir\java\lib\providerutil.jar;
MQFscontextProvider
com.sun.jndi.fscontext.RefFSContextFactory
file:/C:/temp/JNDI-Directory
Verbindungs-Factory:
Name: ConnectionFactory
JNDI-Name: Sample/JMS/ConnectionFactory
Fremder JNDI-Name (Windows): Sample\JMS\ConnectionFactory
Fremder JNDI-Name (Unix): Sample/JMS/ConnectionFactory
Name: Q1
JNDI-Name: Sample/JMS/Q1
Fremder JNDI-Name (Windows): Sample\JMS\Q1
Fremder JNDI-Name (Unix): Sample/JMS/Q1
Wenn Sie MQSeries auf Linux SuSE Version
7.2 ausführen, wird die Initialisierung des Nachrichtenbrokers nicht beendet, nachdem Sie den Startbefehl eingegeben haben: strmqbrk -m <Queue Manager>
. Sie können den Befehl durch Drücken von Strg+C nicht unterbrechen. Wenn Sie den Status des Nachrichtenbrokers mit dem Befehl dspmqbrk
überprüfen, ist das Ergebnis weiterhin "MQSeries
Nachrichtenbroker für Warteschlangenmanager <Warteschlangenmanager> starten."
Es gibt keine Lösungsmöglichkeit und Sie können deshalb keine Anwendungen von WebSphere ausführen, die Veröffentlichen/Subskribieren unter Linux SuSE Version 7.2 verwenden.
Die mit WebSphere auf HP-UX gelieferte JVM unterstützt nicht die von den Warteschlangen von MQSeries verwendete Codierung. Dies führt dazu, dass die JMS-Klassen eine JMS-Ausnahme mit einem Fehlercode von MQJMS1086 und die verbundene Ausnahmebedingung des Typs UnsupportedEncodingException auslösen, wenn Sie versuchen, eine Nachricht an eine Warteschlange zu senden oder zu veröffentlichen.
Lösungsmöglichkeit: Ändern Sie die vom Wartenschlangenmanager verwendete Codierung. Setzen Sie den CCSID-Wert auf 850 oder 819, indem Sie folgende Befehle eingeben:
runmqsc
alter qmgr CCSID(850)
Weitere Informationen dazu finden Sie im Buch MQSeries, Using Java in Kapitel 2.
Das mit MQSeries supportPac MA88 gelieferte Tool JMSAdmin zum Verwalten von JMS-Objekten erfordert die Festlegung bestimmter Konfigurationsparameter. Für das Factory-Merkmal Anfangskontext gibt es zurzeit drei unterstützte Werte:
com.sun.jndi.ldap.LdapCtxFactory
(für LDAP)
com.sun.jndi.fscontext.RefFSContextFactory
(für Dateisystemkontext)
com.ibm.ejs.ns.jndi.CNInitialContextFactory
(zur Arbeit mit der Namens-Repository von WebSphere)
com.ibm.ejs.ns.jndi.CNInitialContextFactory
in WebSphere Application Server
ist veraltet. Sie sollten stattdessen
com.ibm.websphere.naming.WsnInitialContextFactory
verwenden. Damit JMSAdmin mit
der Namens-Repository von WebSphere zusammenarbeiten kann, ist
com.ibm.ejs.ns.jndi.CNInitialContextFactory
aber noch notwendig. Die Objekte von
WebSphere Application Server und die verwalteten JMS-Objekte können mit diesen
unterschiedlichen Werten für das Factory-Merkmal Anfangskontext zusammenarbeiten.
Enthält die Umgebungsvariable LIBPATH nicht den Pfad zu Ihrer MQSeries-Java-Bibliothek, wird die folgende Ausnahmebedingung ausgelöst:
Ausnahmebedingung:
no mqjbnd02 (libmqjbnd02.a or .so) in java.library.path
java.lang.UnsatisfiedLinkError: no mqjbnd02
(libmqjbnd02.a or .so) in java.library.path
Lösungsmöglichkeit: Fügen Sie den folgenden Pfad in Ihre Umgebungsvariable LIBPATH ein:
/mq_install_path/java/lib
Wenn Sie MQSeries über den WebSphere Application Server verwenden, kann die Erstellung einer JMS QueueConnection oder eines WMQ MQQueueManagers mit dem WMQ-Ursachencode 2059 fehlschlagen, auch wenn der Warteschlangenmanager aktiv ist. Dies geschieht, weil WebSphere Verbindungen zum Warteschlangenmanager verwendet, die eine gesonderte Konfiguration erfordern.
Lösungsmöglichkeit: Wenn Sie MQSeries V5.2 verwenden, können Sie eine zusätzliche Zeilengruppe in die mqs.ini hinzufügen, die den Teil des gemeinsam benutzten Speichers beeinflusst, den MQSeries bei der Herstellung der Verbindung verwendet (Die Datei mqs.ini befindet sich normalerweise im Verzeichnis /var/mqm). Der Parameter ist "IPCCBaseAddress". Er wird pro Warteschlangenmanager festgelegt. Standardmäßig wird dieser Parameter auf den Wert "8" festgelegt, es wird jedoch der Wert "11" empfohlen (zulässige Werte für diesen Parameter sind "4", "5", "8", "9", "10", "11" oder "12").
Es folgt ein Beispiel für eine geänderte Zeilengruppe des Warteschlangenmanagers in der Datei mqs.ini:
QueueManager:
Name=MQJavaTest
Prefix=/var/mqm
IPCCBaseAddress=11
Der Warteschlangenmanager muss erneut gestartet werden, damit die Änderungen gültig werden. Wenn die Anwendung mit dem Wert "11" keine normale Verbindung herstellen kann, probieren Sie die anderen Werte aus. Je mehr Komponenten in der Anwendung enthalten sind (WebSphere, DB2 und so weiter), desto weniger Speicher steht für MQSeries zur Verfügung.
Auf der folgenden Website finden Sie die neusten Informationen zu diesem Fehler:
http://www.ibm.com/software/ts/mqseries/support/summary/javasupp.html
Dieser Fehler tritt nicht auf, wenn die Anwendungsdatenbank und die Administrationsdatenbank ferne Datenbanken sind.
Beim Versuch, nach dem Stopp eines Warteschlangenmanagers von MQSeries den Anwendungsserver zu stoppen, löst der Serverprozess in java.exe einen ungültigen Zugriff aus. Dies geschieht, wenn Extended Messaging Support im Server konfiguriert wurde und an einer MQSeries-JMS-Zieladresse empfangsbereit ist.
Lösungsmöglichkeit: Stoppen Sie bei der Verwendung von Extended Messaging Support den Warteschlangenmanager von MQSeries nicht vor dem Anwendungsserver. Falls ein abnormaler Fehler zum Stopp des Warteschlangenmanagers führt, führen Sie in der Administrationskonsole einen erzwungenen Stopp des Anwendungsservers durch.
Der Versuch, den Warteschlangenmanager von MQSeries zu stoppen und erneut zu starten, löst den folgenden Fehler aus:
AMQ8041: Der Warteschlangenmanager kann nicht erneut gestartet oder gelöscht werden, denn die zuvor verbundenen Prozesse sind noch aktiv.
Lösungsmöglichkeit: Starten Sie MQSeries und WebSphere Application Server erneut.
Ein Fix für dieses Problem ist für MQSeries Version 5.2 CSD 3 geplant. Aktualisierungen finden Sie auf der Unterstützungsseite von MQSeries:
http://www.ibm.com/software/ts/mqseries
Beim Empfang einer javax.jms.ObjectMessage in einem durch die Listener-Funktion JMS gesteuerten Nachrichten-Bean wird beim Aufruf von getObject() für die JMS ObjectMessage gelegentlich die Ausnahmebedingung ClassDefNotFound zurückgegeben. Diese Ausnahmebedingung tritt auf, wenn die Anwendungsklasse innerhalb von ObjectMessage nicht geladen werden kann, da sie im Enterprise-Bean-Classloader und nicht im Systemklassenpfad gefunden wurde.
Lösungsmöglichkeit: Bringen Sie die Objektklassendefinition im Klassenpfad ws.ext.dirs
unter, indem Sie die JAR-Datei in das Verzeichnis \WebSphere\AppServer\lib\ext
kopieren.
Falls Sie zwei WebSphere-Anwendungsserver mit JMS-Listener-Funktionen konfigurieren, die die Teilnehmerberechtigung für JMS-Themen unter Verwendung derselben MQ-JMS-Subskriptionswarteschlange besitzen, können manchmal Veröffentlichungen verloren gehen oder auf der Konsole erscheint die folgende Fehlernachricht:
MQJMS1031: Es ist ein interner Fehler aufgetreten
Dies tritt auf, da die MQSeries JMS Pub/Sub-Unterstützung erfordert, dass jeder JVM-Teilnehmer eine andere Subskriptionswarteschlange benutzt.
Lösungsmöglichkeit: Wenn Sie JMSAdmin verwenden, um Ihre TopicConnectionFactory zu
erstellen, geben Sie entweder eindeutige Namen für die Subskriptionswarteschlangen für
BROKERCCSUBQ() an, oder nutzen Sie das Tool für mehrere Warteschlangen, indem Sie ein Präfix
angeben, z. B. BROKERCCSUBQ(SYSTEM.JMS.ND.CC.MySubQueues.*)
.
In diesem Release unterstützt der Internationalization Service die Zeitzonentypen des Java
2-SDK außerhalb von java.util.SimpleTimeZone
nicht. Nicht unterstützte
TimeZone-Typen werden bei ihrer Übergabe an API-Methoden der standardmäßig vorgegebenen
SimpleTimeZone zugeordnet. Dies hat die folgenden Auswirkungen:
java.util.SimpleTimeZone
der
standardmäßig festgelegten java.util.SimpleTimeZone
des übergeordneten Prozesses
zugeordnet.
java.util.SimpleTimeZone
.
Für HP-UX Version 11.11 steht nur die Version mit englischer Ländereinstellung von Netscape als Standardanwendung zur Verfügung. Wenn Sie eine nichtenglische Installation von WebSphere Application Server beenden, kann die Readme-Datei aus diesem Grund nicht geöffnet werden.
Lösungsmöglichkeit: Geben Sie über eine Eingabeaufforderung den folgenden Befehl ein, um die Readme-Datei zu öffnen:
netscape [WAS_HOME]/Enterprise/readme/xx_XX/readme.htm
wobei xx_XX für eine der folgenden Landessprachen steht:
de_DE Deutsch
en_US Englisch
es_ES Spanisch
fr_FR Französisch
it_IT Italienisch
ja_JP Japanisch
ko_KR Koreanisch
pt_BR brasilianisches Portugiesisch
zh_CN vereinfachtes Chinesisch
zh_TW traditionelles Chinesisch
Bei der Ausführung von Befehlen in einem DOS-Fenster sind einige Zeichen in den Ausgabenachrichten beschädigt.
Lösungsmöglichkeit: Leiten Sie den DOS-Befehl in eine Ausgabedatei um, und zeigen Sie diese Ausgabedatei mit Hilfe des Editors Write von Windows an.