Die erste Migrationsoption für das WebSphere Studio Application Developer
Integration Edition SOAP/JMS-Binding ermöglicht einem Web-Services-Client den Zugriff auf den Service.
Der Export mit Web-Service-Binding ermöglicht den Zugriff auf eine SCA-Komponente über einen externen Web-Services-Client. So erstellen Sie einen Export mit Web-Service-Binding:
- Öffnen
Sie den Assembly-Editor für das vom Migrationsassistenten erstellte Modul.
- Erstellen Sie einen Export mit SCA-Binding für jede Serviceschnittstelle, für die ein IBM Web
Service (SOAP/JMS)-Binding inWebSphere Studio Application Developer
Integration Edition generiert wurde:
- Klicken Sie mit der rechten Maustaste auf die SCA-Komponente im Assembly-Editor.
- Wählen Sie
'Exportieren…'.
- Wählen
Sie 'Web-Service-Binding'.
- Wenn es mehrere Schnittstellen für die Komponente gibt, wählen Sie die zu exportierende Schnittstelle(n) mit diesem Bindingtyp.
- Wählen Sie die Transport-soap/jms.
- Wenn der Web Services Export erstellt wurde, wählen Sie den Export im Assembly-Editor und wählen Sie
in der Ansicht 'Eigenschaften' das Inhaltsteilfenster 'Beschreibung'. Der Name und die Beschreibung des Exports werden aufgelistet und können auf Wunsch geändert werden.
- Speichern Sie das Assembly-Diagramm.
- Wählen Sie das Inhaltsteilfenster 'Binding', in dem Sie sehen können, dass ein IBM Web Service
WSDL-Binding und Service direkt im Projektordner des Moduls erstellt wurde. Es erhält den Namen component-that-was-exportedExportWSDL PortType
name Jms_Service.wsdl. Wenn Sie diese Datei untersuchen, werden Sie feststellen, dass das eingeschlossene Dokument/Literal-Binding standardmäßig verwendet wird, da dies der bevorzugte Stil in 6.0 ist. Dies ist die WSDL, die von IBM Web-Service-Clients für den Aufruf des Service verwendet werden wird.
- Führen Sie diese Schritte durch, um ein neues Web-Service-Binding und einen Service zu generieren, wenn das Beibehalten des Client-Codes gewünscht ist:
- Kopieren Sie die 5.1 WSDL-Datei aus dem generierten 5.1 EJB-Projekt unter ejbModule/META-INF/wsdl/Geschäftsprozessname/Geschäftsprozessschnittstellen-PorttypnameJMS.wsdl in das Geschäftsintegrations-Modulprojekt.
- Nach dem Kopieren der Datei und der Neuerstellung des Moduls werden möglicherweise Fehlermeldungen angezeigt, da die vom Web-Service verwendeten XML-Schematypen, WSDL-Nachrichten und WSDL-Porttypen in der WSDL-Datei desIBM Web-Services in 5.1 doppelt vorhanden sind. Um dies zu beheben, löschen Sie diese doppelt vorhandenen Definitionen aus der Binding/Service-WSDL des IBMWeb-Services und fügen Sie an deren Stelle einen WSDL-Import für die echte Schnittstellen-WSDL hinzu. Hinweis:
Beachten Sie, dass die Schemendefinitionen in bestimmten Fällen geändert wurden, als der
IBM Web-Service-Implementierungscode von
WebSphere Studio Application Developer
Integration Edition generiert wurde. Dies führt unter Umständen zu Inkonsistenzen für vorhandene Clients, die die IBM Web-Service-WSDL verwenden. Das Schemaattribut
"elementFormDefault" beispielsweise wurde in dem Inline-Schema, das in der
IBM Web-Service-WSDL generiert wurde, auf
"qualifiziert" gesetzt, auch wenn die ursprüngliche Schemadefinition nicht qualifiziert war. Dadurch wurde der folgende Fehler während der Laufzeit generiert:
WSWS3047E:
Fehler: Element kann nicht entrealisiert werden.
- Klicken Sie mit der rechten Maustaste auf diese WSDL-Datei, die Sie soeben in das Geschäftsintegrationsmodul kopiert haben, und wählen Sie 'Öffnen mit' und 'WSDL-Editor'.
- Gehen Sie zur Registerkarte 'Quelle'. Löschen Sie alle in dieser Datei definierten WSDL
PortTypes und Nachrichten.
- Daraufhin wird folgender Fehler angezeigt: Der für
das '<binding>' Binding angegebene
'<portType>' Porttyp ist nicht definiert.
Um dies zu beheben, klicken Sie im WSDL-Editor in der Diagrammsicht mit der rechten Maustaste auf den Importabschnitt und wählen Sie
'Import hinzufügen'.
- Klicken Sie in der Ansicht 'Eigenschaften' in der Registerkarte 'Allgemein' auf die Schaltfläche … rechts neben dem Feld für die Speicherposition. Blättern Sie zur Schnittstellen-WSDL, in der sich die WSDL-Nachricht und die Porttypdefinitionen befinden und klicken Sie auf OK, um die Schnittstellen-WSDL in die Service/Binding-WSDL zu kopieren.
- Speichern Sie die WSDL-Datei.
- Aktualisieren/erstellen Sie das Projekt neu. Wechseln Sie in die Geschäftsintegrationsperspektive. Öffnen Sie das Assembly-Diagramm des Moduls im Assembly-Editor.
- Erweitern Sie das zu migrierende Modul in der Ansicht 'Projektexplorer', und erweitern Sie die logische Kategorie
'Web-Service-Ports'. Der in der Binding/Service-WSDL vorhandene Port sollte nun angezeigt werden. Ziehen und übergeben Sie ihn an den Assembly-Editor.
- Wählen Sie die Erstellung eines
Exports mit Web-Service-Binding und wählen Sie den entsprechenden Portnamen. Dadurch wird der Export erstellt, der das alte Binding/Service verwendet, sodass vorhandene Web-Service-Clients nicht geändert werden müssen. Wenn Sie den Export auswählen, den Sie soeben im Assembly-Editor erstellt haben und zur Ansicht 'Eigenschaften' gehen, wird in der Registerkarte 'Binding' angezeigt, dass die 5.1 Port- und Servicenamen für Sie eingetragen wurden.
- Speichern Sie alle Änderungen.
- Kurz vor der Implementierung der Anwendung können Sie die Konfiguration des generierten Web-Projekts ändern, so dass Sie der 5.1 Serviceadresse entspricht (Sie müssen diese Änderungen jedes Mal durchführen,
wenn Sie Änderungen am SCA-Modul vornehmen, durch die diese Datei erneut generiert wird). Wenn Sie die Servicedefinition der
IBM Web-Service-WSDL, die Sie aus 5.1 wiederverwenden, anzeigen, wird die Serviceadresse angezeigt, zu der der 5.1-Client codiert ist:
<wsdlsoap:address
location="http://localhost:9080/MyServiceWeb/services/MyServicePort"/>
- Damit die generierten 6.0 Webprojekt-Artefakte mit dieser alten Serviceadresse übereinstimmen, sollten Sie den generierten Implementierungsdeskriptor des Webprojekts ändern. Öffnen Sie den Implementierungsdeskriptor in WebSphere Integration Developer und fügen Sie in der Registerkarte 'Servlets' eine zusätzliche URL-Zuordnung hinzu, die der vorhandenen URL-Zuordnung für diesen Export ähnelt, mit dem gleichen Servlet-Namen aber einem anderen URL-Muster.
- Wenn Sie außerdem das
Kontextstammverzeichnis dieses Web-Projekts ändern müssen, so dass es dem Kontextstammverzeichnis in der
ursprünglichen Serviceadresse entspricht (in diesem Beispiel ist das Kontextstammverzeichnis "MyServiceWeb"),
öffnen Sie den Implementierungsdeskriptor für die J2EE-Unternehmensanwendung,
in dem sich dieses Webprojekt befindet, und ändern Sie das Kontextstammverzeichnis dieses Webmoduls,
so dass es dem Kontextstammverzeichnis der alten Serviceadresse entspricht. Möglicherweise wird der folgende Fehler angezeigt, den Sie ignorieren können:
CHKJ3017E:
Webprojekt: <WEB PROJ NAME> ist einem ungültigen Kontextstammverzeichnis zugeordnet: <NEW
CONTEXT ROOT> in EAR-Projekt: <APP NAME>.