Die erste Migrationsoption für das WebSphere Studio Application Developer
Integration Edition SOAP/HTTP-Prozessbinding ist die Ermöglichung des Zugriffs auf Geschäftsprozesse durch einen Web-Services-Client.
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 BPEL-Prozessschnittstelle, für die ein IBM Web-Service-Binding (SOAP/HTTP) in WebSphere Studio Application Developer
Integration Edition generiert wurde, durch Klicken mit der rechten Maustaste auf die BPEL-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/http.
- 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.
- 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-Porttypname_HTTP.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 IBM Web-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>.