Möglicherweise tritt ein Problem auf, das dazu führt, dass Sie nach der Implementierung der privaten UDDI-Registrierung für WebSphere V6 mit DB2 nicht mehr auf dieses Produkt zugreifen können, wenn es über eine bereits vorhandene private UDDI-Registrierung für WebSphere V6 installiert wurde. Nach Abschluss des UDDI-Implementierungsassistenten wird die UDDI-Anwendung auf dem Server ausgeführt, die Einstellungen der Serverkonfiguration werden vom System jedoch nicht identifiziert. Dies führt dazu, dass die UDDI-EAR-Komponente keine Daten mit der privaten DB2-UDDI-Registrierung austauschen kann. Das bedeutet, dass alle für die UDDI-Anwendung ausgeführten Befehle fehlschlagen und hierbei eine Fehlernachricht ausgegeben wird, in der Sie über das Scheitern der Initialisierung des Registrierungsknotens (Error initializing Registry Node) informiert werden. Hierbei werden auch benutzerdefinierte Taxonomien hinzugefügt, was zur Ausgabe eines Axis-Fehlers führt.
Problembehebungen:
1. Präventivmaßnahme: Vor der Implementierung einer UDDI-Registrierung für WebSphere V6 mit DB2 müssen Sie mit dem UDDI-Assistenten alle bereits auf dem System installierten UDDI-Registrierungen entfernen. Rufen Sie anschließend den UDDI-Assistenten erneut auf, um eine private UDDI-Registrierung für WebSphere V6 mit DB2 zu implementieren.
2. Fehlerbehebung in der installierten Registrierung: Wenn Sie eine UDDI-Registrierung für WebSphere V6 mit DB2 über eine bereits installierte Registrierung installiert haben und dann Probleme aufgetreten sind, können Sie über die Verwaltungskonsole des Servers die Anwendung für die UDDI-Registrierung stoppen und anschließend erneut starten.
Die unter "Fenster-> Vorgaben-> Web-Services-> WS-I-Kompatibilitätsstufe" und in den Projekteigenschaften definierten Einstellungen für die WS-I AP-Kompatibilitätsstufe haben keine Auswirkungen auf die WS-I-Gültigkeitsprüfung von WSDL-Komponenten, wenn für diese die Einstellung "suggest" oder "require" definiert ist. Diese Vorgaben sind standardmäßig auf die Einstellung "ignore" gesetzt.
Das Problem kann wie folgt umgangen werden. Das Dokument mit den Testfakten für WS-I Attachments Profile, das vom WS-I-WSDL-Prüfprogramm zum Testen von WSDL-Komponenten auf Kompatibilität mit dem Profil verwendet wird, wurde von der WS-I-Organisation nicht rechtzeitig veröffentlicht, um im aktuellen Produktrelease von IBM Rational Developer berücksichtigt zu werden. Ein vorläufiger Fix zum Aktivieren der Vorgabe wird nach der Veröffentlichung des Dokuments mit den Testfakten ausgegeben.
Wenn das Service- bzw. Clientprojekt bereits vor dem Starten des Assistenten für Web-Services oder Web-Service-Clients definiert wurde, verwenden die Assistenten immer die EAR-Komponente, die bereits das vorhandene Projekt enthält. Dies gilt auch dann, wenn auf der Seite "Konfiguration der Serviceimplementierung" oder "Konfiguration der Clientumgebung" eine andere Auswahl festgelegt wurde. Wenn das vorhandene Projekt vor dem Start der Assistenten keiner EAR-Komponente hinzugefügt wurde, dann schlägt die Assistentenausführung fehl, und das System gibt folgende Fehlernachricht aus:
IWAB0213E Beim Starten des Servers ist ein Fehler aufgetreten.
Details:
IWAB0213E Beim Starten des Servers ist ein Fehler aufgetreten.
org.eclipse.core.runtime.CoreException: WebSphere v5 unterstützt nur J2EE 1.2- und 1.3-Unternehmensanwendungen.
at com.ibm.etools.websphere.tools.v51.internal.WASTestServerWorkingCopy.modifyModules(Unknown Source)
...Um dieses Problem zu umgehen, müssen Sie sich vergewissern, dass alle Projekte, die Web-Services bzw. Web-Service-Clients zugeordnet werden sollen, bereits zu einer EAR-Komponente hinzugefügt wurden, bevor der Assistent gestartet wird. Die einzige Ausnahme zu dieser Regel gilt für Projekte, bei denen als Zieleinheit ein Tomcat-Server verwendet wird, da diese Einheiten nicht zu einer EAR-Komponente hinzugefügt werden müssen.
Wenn Sie die Überwachung für den verwendeten Zielserver manuell erstellt haben (durch Auswahl von "Überwachung -> Eigenschaften..." auf der Registerkarte "Server") und dann den Web-Service-Assistenten ausgeführt und auf der ersten Seite dieses Assistenten die Option "Web-Service überwachen" ausgewählt haben, dann schlägt die Ausführung des Assistenten während der Verarbeitung mit der folgenden Fehlernachricht fehl:
IWAB0014E Eine unerwartete Ausnahmebedingung ist aufgetreten. Null
java.lang.NullPointerException
at com.ibm.etools.webservice.consumption.command.common.CreateMonitorCommand.hasContentWebServices(CreateMonitorCommand.java:114)
...Um dieses Problem zu vermeiden, müssen Sie entweder den Assistenten erneut ausführen und hierbei die Option "Web-Service überwachen" inaktivieren, oder auf dem Server "Überwachung -> Eigenschaften..." aufrufen, die Überwachung entfernen und anschließend den Assistenten erneut ausführen, wobei dann die Option "Web-Service überwachen" aktiviert sein muss.
Auf der ersten Seite der Assistenten für Web-Services und Web-Service-Clients stehen zwei Client-Proxy-Typen zur Verfügung: "Java-Proxy" (die Standardeinstellung) und "Benutzerdefinierte Funktion für Web-Service". Wenn Sie "Benutzerdefinierte Funktion für Web-Service" auswählen und dann versuchen, den Assistenten zu beenden oder die Seiten nach der Seite für die Web-Service-Auswahl aufzurufen, schlägt die Ausführung des Assistenten fehl, und das System gibt die folgende Fehlernachricht aus: "IWAB0234E Ein interner Fehler ist aufgetreten. Details: Null".
Problemumgehung: Verwenden Sie die Web-Service-Assistenten nicht zum Erstellen von benutzerdefinierten Funktionen für Web-Services. Wählen Sie stattdessen "Neu -> Andere -> Daten -> Benutzerdefinierte Funktion für Web-Service" aus.
Die Schaltfläche zum Starten des Web-Service-Explorers und der Menüpunkt für "Ausführen > Webservice-Explorer starten" stehen nur in der J2EE-Perspektive zur Verfügung.
Sie müssen entweder die J2EE-Perspektive öffnen und den Web-Service-Explorer starten oder (sofern möglich) mit der rechten Maustaste auf einem WSDL-Dokument oder einem Web-Service in Ihrem Arbeitsbereich klicken und dann "Web-Service -> Mit Web-Service-Explorer testen" auswählen.
In einem DADX- oder URL-Web-Service-Erstellungsszenario für WebSphere Application Server V5, in dem die Generierung von Web-Service-Proxys aktiviert ist, kann die Ausführung des Assistenten möglicherweise fehlschlagen. In diesem Fall wird die folgende Fehlernachricht ausgegeben:
IWAB0107E Beim Versuch, den WSDL-Nachrichtenteil zu analysieren, ist ein Fehler aufgetreten: Eingabe.
WSDLException: faultCode=PARSER_ERROR: Fehler beim Laden der Seite http://localhost:9080/SomeProject/SomeGroup/something.dtd/XSD: Herstellung der Verbindung nicht möglich: Verbindung: Wrapped-Ausnahmebedingung (WSDLException: faultCode=PARSER_ERROR: Problem loading http://localhost:9080/SomeProject/SomeGroup/something.dtd/XSD: Connection refused: connect: Wrapped exception)
java.net.ConnectException: Herstellung der Verbindung nicht möglich: Verbindung (java.net.ConnectException: Connection refused: connect)
...Dieses Problem tritt auf, weil der Assistent nicht rechtzeitig einen Neustart des Servers durchführt, so dass der Codegenerator des Web-Service-Clients WSDL- oder XSD-Elemente vom Server abrufen kann. Zur Behebung des Problems gibt es mindestens zwei Möglichkeiten:
- Wählen Sie im Web-Service-Assistenten für den Web-Service-Client einen anderen Server aus als die Einheit, die für den Web-Service verwendet wird.
- Inaktivieren Sie im Web-Service-Assistenten die Funktion für die Generierung von Proxy-Code. Führen Sie den Assistenten für den Web-Service-Client separat aus, nachdem die Ausführung des Web-Service-Assistenten abgeschlossen ist.
Wenn Sie den Web-Service-Assistenten zum Erstellen eines Web-Services für einen Server einsetzen, der noch nicht definiert wurde, dann wird der Server vom Assistenten erstellt, seine Ausführung kann jedoch mit folgender Fehlernachricht fehlschlagen:
"IWAB0534E EAR-Projekt kann der Serverkonfiguration nicht hinzugefügt werden."
Details: java.lang.IllegalArgumentException:
at java.lang.Throwable.<init>(Throwable.java:59)
at java.lang.Throwable.<init>(Throwable.java:73)
at org.eclipse.core.internal.runtime.Assert.isLegal(Throwable.java)
at org.eclipse.core.internal.runtime.Assert.isLegal(Throwable.java)
at org.eclipse.core.runtime.Status.setMessage(Throwable.java)
at org.eclipse.core.runtime.Status.<init>(Unknown Source)
at com.ibm.wtp.server.core.internal.ServerWorkingCopy.modifyModules(Unknown Source)
...Zu Vermeidung dieses Problems müssen Sie den Assistenten erneut starten und die Operation anschließend wiederholen. Der Assistent verwendet dann den Server, der direkt vor dem Fehlschlagen der Ausführung mit dem Assistenten erfolgreich erstellt werden konnte.
Wenn Sie den Web-Service-Assistenten zum Erstellen eines Web-Services in einem Projekt verwenden, dessen Zieleinheit ein Servertyp ist, der noch nicht installiert wurde, dann kann die Ausführung des Assistenten fehlschlagen und die folgende Fehlernachricht ausgegeben werden:
IWAB0213E Beim Starten des Servers ist ein Fehler aufgetreten.
org.eclipse.core.runtime.CoreException: Der Server namens WebSphere v5.1 Test Environment @ localhost wurde nicht ordnungsgemäß gestartet. Überprüfen Sie, ob an der Konsole entsprechende Fehlernachrichten ausgegeben wurden.
at com.ibm.wtp.server.core.internal.Server.synchronousStart(Unknown Source)
...Dieser Fehler tritt auf, weil der Assistenten auf der Seite für die Serverimplementierungskonfiguration oder auf der Seite für die Konfiguration der Clientumgebung standardmäßig den Zielserver des Projekts verwendet, ohne vorher festzustellen, ob der Zielserver installiert wurde und verfügbar ist. Diese Situation tritt meist dann ein, wenn Projekte importiert werden, die von anderen Benutzern in anderen Installationen des Produkts erstellt wurden. Zur Vermeidung dieses Problems können Sie auf der Seite für die Serverimplementierungskonfiguration oder für die Konfiguration der Clientumgebung explizit einen Server auswählen, der in Ihrem Arbeitsbereich bereits definiert wurde.
Wenn Sie nach dem Importieren des StockQuoteAxis-Beispiels versuchen, die StockQuoteAxis- und StockQuoteAxisClient-Projekte auf einem Tomcat 4.0- oder 4.1-Server hinzuzufügen, dann gibt das System die Nachricht "Es gibt keine Projekte, die zum Server hinzugefügt oder von ihm entfernt werden können" aus. Wenn Sie versuchen, das JSP-Beispiel auf einem Tomcat 4.0- oder 4.1-Server auszuführen, dann erhalten Sie die Nachricht, dass der ausgewählte Server die Version 1.4 der J2EE-Webmodulspezifikation nicht unterstützt.
Das Problem tritt auf, weil die StockQuoteAxis- und StockQuoteAxisClient-Webprojekte im Beispiel für die Ausführung in einer Laufzeitumgebung unter J2EE 1.4 / Servlet 2.4 erstellt wurden und weder Tomcat 4.0 noch Tomcat 4.1 die Spezifikation für Servlet 2.4 unterstützt. Sie können das Problem durch eine der beiden folgenden Maßnahmen beheben:
- Führen Sie das Beispiel auf einem Tomcat 5.0-Server aus.
- Befolgen Sie die Anweisungen zum Erstellen eigener Builds in der Beispielgalerie, und wählen Sie als Zieleinheit Ihrer Webprojekte Tomcat 4.0 oder 4.1 aus.
Die vom Assistenten generierten Beispiel-JSPs für einen Web-Service-Client in einem EJB- oder Anwendungsclientprojekt rufen den Proxy für den Web-Service-Client in einer Umgebung ohne Containerverwaltung auf. Die Sicherheitskonfiguration für den Web-Service-Client wird umgangen. Hierdurch verfügt der Client über keine Sicherheitsfunktionen und kann keine Daten mit dem gesicherten Web-Service austauschen.
Gehen Sie wie folgt vor, um die Beispiele für den gesicherten Client im EJB-Projekt auszuführen:
Gehen Sie wie folgt vor, um die Beispiele für den gesicherten Client im Anwendungsclientprojekt auszuführen:
- Erstellen Sie eine Methode in der Client-EJB.
- Führen Sie innerhalb der Methode einen Web-Service-Aufruf über den Proxy durch.
- Führen Sie die Client-EJB aus.
- Suchen Sie die Datei "Main.java" im Anwendungsclient.
- Führen Sie innerhalb des Hauptprogramms einen Web-Service-Aufruf über den Proxy durch.
- Führen Sie den Anwendungsclient aus.
Wenn Sie einen J2EE 1.3-Web-Service im Bottom-Up-Modus erstellen, der Parameter für komplexe Typen enthält, werden alle Felder der Parameterklasse, die über ein getter-Element verfügen, einem untergeordneten Element unter xsd:complexType in der WSDL-Datei zugeordnet. Um der JAX-RPC 1.1-Spezifikation in J2EE 1.4 vollständig zu entsprechen, wurde diese Funktionsweise geändert. Alle (in der java.beans.Introspector-Klasse definierten) Eigenschaften für den Schreib-/Lesezugriff (read/write) werden einem Element in xsd:complexType zugeordnet.
Beim Erstellen eines EJB-Web-Service-Skeletons, in dem das gewünschte EJB-Zielprojekt noch nicht vorhanden ist, erstellt der Web-Service-Assistent das EJB-Projekt und eine zugeordnete JAR-Datei für den EJB-Client. Beispiel: EJBProjectName und EJBProjectNameClient.Dieser JAR-Projektname für den EJB-Client führt zu einem Konflikt mit dem Standardprojektnamen für den Web-Service-Client, der vom Web-Service-Assistenten während der Erstellung des Web-Service-Clients ausgewählt wurde. Hierdurch kommt es zu Fehlern im Web-Service-Client-Projekt. Wenn es sich beim Web-Service-Client-Projekt um ein Webprojekt handelt, dann werden in der Client-EAR-Komponente Fehler ausgegeben. Darüber hinaus erhalten Sie auch noch eine Fehlernachricht, in der Sie über einen Fehler beim Kopieren der JAR-Datei des Web-Service-Dienstprogramms informiert werden, wenn Sie den Assistenten zum Generieren des Beispiels für die JSP-Testfunktion auffordern.
Zur Vermeidung dieses Problems sollten Sie für das Web-Service-Client-Projekt einen Namen auswählen, der von EJBProjectNameClient abweicht (wenn das EJB-Projekt EJBProjectName nicht schon vorhanden ist). Alternativ hierzu können Sie auch das EJB-Projekt erstellen, bevor Sie den Web-Service-Assistenten starten.
Wenn für Websphere Application Server V5.0 oder V5.1 die Sicherheit aktiviert ist, befinden sich Endpunkt-zu-Endpunkt-Szenarios von Web-Services im Wartestatus für Zeitlimits und generieren eine Fehlernachricht mit dem Inhalt, dass das Modul nicht erneut gestartet werden konnte ("Could not restart the module. *"). Dieser Fehler kann gefahrlos ignoriert werden.
Sowohl für IBM SOAP- als auch für IBM WebSphere-Laufzeitkomponenten müssen Sie das EJB-Projekt sowie das zugehörige Routerprojekt in dieselbe EAR-Datei in Top-down- oder in Bottom-up-EJB-Web-Service-Szenarios einfügen.
Eine in Websphere Application Server V6 implementierte Anwendung kann über die Administrationskonsole angezeigt, aber nicht geändert werden. Wenn für eine Rational Developer-Produktanwendung die vollständige Konsolfunktionalität erforderlich ist, können Sie die Option zum Ausführen von Ressourcen im Arbeitsbereich im UTE-Server-Editor abwählen. Dadurch wird UTE im Grunde genommen als ferner Server behandelt, und eine .ear-Datei wird generiert und veröffentlicht.
Wenn Sie unter Verwendung der IBM SOAP-Laufzeitkomponente einen Skeleton-Web-Service aus einer WSDL-Datei erstellen und sich in demselben Assistenten für die Generierung eines Proxys entscheiden, wird das Proxy möglicherweise nicht oder fehlerhaft generiert. Zur Vermeidung dieses Problems können Sie zuerst den Skeleton-Web-Service generieren und dann die hierbei erstellte WSDL-Datei verwenden, um den Client in einem separaten Arbeitsgang zu generieren.
Im aktuellen Release kann der Web-Service-Assistent nicht mit Hilfe einer WSDL-Datei, die über die HTTP-Basisauthentifizierung geschützt ist, einen Skeleton-Web-Service oder einen Web-Service-Client erstellen. Die Fehlerumgehung besteht darin, die WSDL-Datei mit einem Browser in das physische Dateisystem herunterzuladen und den Web-Service-Assistenten mit dieser Kopie der WSDL-Datei auszuführen.
Nach der Ausführung von Endpoint Enabler für Web-Services zur Erstellung eines JMS-Endpunkts wird der folgende Fehler für die Datei 'ejb-jar.xml' im JMS-Routerprojekt gemeldet: "CHKJ2802E: Klasse com.ibm.ws.webservices.engine.transport.jms.JMSListenerMDB oder einer der Supertypen kann nicht wiedergegeben werden. Überprüfen Sie den Klassenpfad." Diese Fehlernachricht kann gefahrlos ignoriert werden.
Beim Ausführen des Lerntexts zum Erstellen und Implementieren eines Web-Service aus einer JavaBean werden Sie dazu aufgefordert, die JavaBean StockQuoteService aus einem Ordner mit dem Namen 'Resources' zu importieren. Die Ordnerstruktur innerhalb des Ordners 'Resources' ist falsch und führt zur Erstellung eines Pakets, das nicht dem Paketnamen in der JavaBean entspricht.
Um dies zu korrigieren, müssen Sie beim Importieren der erforderlichen Ressourcen den Ordner 'StockQuote' auswählen und die Ordner darin abwählen. Sobald der Ordner 'StockQuote' importiert wurde, wählen Sie das Paket 'StockQuote' aus, klicken Sie mit der rechten Maustaste, wählen Sie dann 'Erneut faktorieren > Umbenennen' aus, und benennen Sie anschließend das Paket in 'stockquote' um.
Wenn eine benutzerdefinierte Taxonomie aus der Tabelle im Assistenten für die private UDDI-Registrierung gelöscht wird, werden die Kategoriedaten aus der Registrierung gelöscht, tModel selbst ist aber noch immer darin vorhanden. Im Web-Service-Explorer wird die gelöschte Kategorie immer noch anzeigt, wenn nach benutzerdefinierten Kategorien gesucht wird.
In dem Fall, das eine EJB und ein EJB-Projekt über die Anmerkungsunterstützung erstellt wurden, werden die Home- und die Remote-Schnittstelle der EJB im Unterordner 'gen/src' des EJB- oder des EJB-Clientprojektes erstellt, nicht im Ordner 'ejbModule'. Der Web-Service-Assistent generiert Code im Standardordner, was zu doppelten Home- und Remote-Schnittstellen führt. Dies hat anscheinend keine Auswirkungen auf die Ausführung des Web-Service in einem einfachen Szenario. Zum Vermeiden des Kompilierungsfehlers können Benutzer jedoch die Home- und die Remote-Schnittstelle aus dem Ordner 'gen/src' in den Ordner 'ejbModule' versetzen, bevor sie den Web-Service-Assistenten starten.
Wenn Sie versuchen, ein WebSphere-Web-Service-Beispiel aus der Beispielgalerie (WebSphere Stock Quote, Temperature Conversion oder AddressBook) ohne einen WebSphere V6-Server zu importieren, wird eine Warnung mit dem folgenden Inhalt angezeigt:
No WebSphere V6 server runtime detected. You will need to manually set the server target runtime for the imported projects after you have installed a WebSphere V6 server. (Es wurde keine WebSphere V6-Server-Laufzeitkomponente gefunden. Sie müssen die Ziellaufzeitkomponente des Servers für die importierten Projekte manuell definieren, nachdem Sie einen WebSphere V6-Server installiert haben.)
Wenn Sie das importierte Beispiel löschen, einen WebSphere V6-Server manuell hinzufügen und mit dem erneuten Import fortfahren, wird das Beispiel noch immer mit Kompilierungsfehlern importiert, die durch einen Fehler bei der Serverzieldefinierung verursacht werden. Löschen Sie als Fehlerumgehung das Beispiel, schließen Sie die Arbeitsumgebung, führen Sie einen Neustart durch und importieren Sie das Beispiel erneut.
Wenn Sie unter Verwendung von WebSphere Application Server V6.0 einen Web-Service-Client erstellen, wird eine Ausnahmebedingung ausgelöst, wenn Sie ein WSDL-Dokument benutzen, das keine SOAP-Bindungen enthält.
Wenn Sie einen vorhandenen Web-Service in demselben Projekt mit Hilfe einer geänderten WSDL-Datei erneut erstellen müssen, werden die generierten Java-Dateien nicht aktualisiert. Dies kann zu Kompilierungsfehlern oder dazu führen, dass die Java-Dateien unverändert bleiben. Die Fehlerumgehung dafür besteht darin, alle generierten Java-Dateien zu sichern und zu löschen, bevor Sie den Skeletonassistenten für Web-Services ausführen.
Die Ausnahmebedingung NullPointerException wird bei dem Befehl UDDIPublish/UDDIUnpublish -profileName <profilname> ausgelöst, wenn der Parameter -inquiryUrl <url> nicht vor dem Parameter -profileName angegeben wird. Wahrscheinlich müssen Sie den Parameter -profileName gar nicht verwenden, da der Standardwert bereits dem installierten Profil entspricht. Wenn Sie den Parameter -profileName doch verwenden müssen, sollten Sie den Parameter -inquiryUrl <url> vor dem Parameter -profileName <profilname> verwenden.