Die empfohlene Migrationstechnik ist die Verwendung des WebSphere Integration
Developer Java-Komponententyps, mit dem Sie den Java-Service als eine SCA-Komponente darstellen können. Während der Migration muss benutzerdefinierter Java-Code geschrieben werden, um zwischen dem SCA Java-Schnittstellenstil und dem vorhandenen Schnittstellenstil der Java-Komponente zu unterscheiden.
So erstellen Sie die benutzerdefinierte Java-Komponente:
- Erweitern Sie im Modulprojekt die Option 'Schnittstellen' und wählen Sie die WSDL-Schnittstelle, die für diese Java-Klasse in WebSphere Studio
Application Developer Integration generiert wurde.
- Ziehen und übergeben Sie diese Schnittstelle an den Assembly-Editor. Es wird ein Dialog angezeigt, der Sie nach dem zu erstellenden Komponententyp fragt. Wählen Sie 'Komponente mit keinem Implementierungstyp' und klicken Sie auf OK.
- Eine generische Komponente wird im Assemblydiagramm angezeigt. Markieren Sie sie und gehen Sie zur Ansicht 'Eigenschaften'.
- Sie können den Namen und Anzeigenamen der Komponente in einen beschreibenden Namen in der Registerkarte 'Beschreibung' ändern.
- Auf der Registerkarte 'Details' können Sie sehen, dass diese Komponente über eine Schnittstelle verfügt, nämlich die, die Sie zum Assembly-Editor gezogen und an diesen übergeben haben.
- Stellen Sie sicher, dass sich dieJava-Klasse, auf die Sie versuchen, zuzugreifen, im Klassenpfad des Serviceprojekts befindet, wenn sie nicht im Projekt selbst enthalten ist.
- Klicken Sie mit der rechten Maustaste auf das Modulprojekt und wählen Sie 'Editor für Abhängigkeiten öffnen…'. Stellen Sie sicher, dass das Projekt, das die alte
Java-Klasse enthält,
im Abschnitt 'Java' aufgelistet ist. Wenn dies nicht der Fall ist, fügen Sie sie durch Klicken auf die Schaltfläche 'Hinzufügen…' hinzu.
- Klicken Sie im Assembly-Editor mit der rechten Maustaste auf die Komponente, die Sie soeben erstellt haben, und wählen Sie . Wählen Sie daraufhin das Paket, in dem die Java-Implementierung generiert wird.
Dadurch wird ein Java-Gerüstservice erstellt, der sich an die WSDL-Schnittstelle gemäß dem SCA-Programmiermodell hält, in dem komplexe Typen durch ein commonj.sdo.DataObject-Objekt dargestellt werden und einfache Typen durch ihre funktional entsprechenden Java-Objekte.
Die folgenden Code-Beispiele zeigen:
- Relevante Definitionen aus der 5.1 WSDL-Schnittstelle
- Die WebSphere Studio
Application Developer Integration Edition 5.1 Java-Methoden, die der WSDL entsprechen
- Die WebSphere Integration
Developer 6.0 Java-Methoden für die gleiche WSDL
Der folgenden Code zeigt die relevanten Definitionen aus der 5.1 WSDL-Schnittstelle:
<types>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
attributeFormDefault="qualified"
elementFormDefault="unqualified"
targetNamespace="http://migr.practice.ibm.com/"
xmlns:xsd1="http://migr.practice.ibm.com/">
<complexType name="StockInfo">
<all>
<element name="index" type="int"/>
<element name="price" type="double"/>
<element name="symbol" nillable="true"
type="string"/>
</all>
</complexType>
</schema>
</types>
<message name="getStockInfoRequest">
<part name="symbol" type="xsd:string"/>
</message>
<message name="getStockInfoResponse">
<part name="result" type="xsd1:StockInfo"/>
</message>
<operation name="getStockInfo" parameterOrder="symbol">
<input message="tns:getStockInfoRequest"
name="getStockInfoRequest"/>
<output message="tns:getStockInfoResponse"
name="getStockInfoResponse"/>
</operation>
Der folgende Code zeigt die WebSphere Studio Application Developer
Integration Edition 5.1 Java-Methoden, die der WSDL entsprechen:
public StockInfo getStockInfo(String symbol)
{
return new StockInfo();
}
public void setStockPrice(String symbol, float newPrice)
{
// set some things
}
Der folgende Code zeigt die WebSphere Integration Developer 6.0 Java-Methoden für die gleiche WSDL:
public DataObject getStockInfo(String aString) {
//TODO Needs to be implemented.
return null;
}
public void setStockPrice(String symbol, Float newPrice) {
//TODO Needs to be implemented.
}
Sie müssen nun Code dort eingeben, wo die “//TODO”-Tags in der generierten Java-Implementierungsklasse angezeigt werden. Es gibt zwei Optionen:
- Verschieben Sie die Logik von der ursprünglichen Java-Klasse in diese Klasse und passen Sie sie für die Verwendung von DataObject an.
- Hierbei handelt es sich um die empfohlene Option, wenn Sie die Top-down-Methode in WebSphere Studio
Application Developer Integration Edition ausgewählt haben und die Java-Komponente mit DataObject-Parametern arbeiten soll. Diese Nacharbeit ist notwendig, da die aus WSDL-Definitionen in
WebSphere Studio Application Developer
Integration Edition generierten
Java-Klassen
über WSIF-Abhängigkeiten verfügen, die wenn möglich eliminiert werden sollten.
- Erstellen Sie eine private Instanz der alten Java-Klasse in dieser generierten Java-Klasse und schreiben Sie Code, um Folgendes zu tun:
- Konvertieren aller Parameter der generierten Java-Implementierungsklasse in Parameter, die die alte Java-Klasse erwartet
- Aufrufen der privaten Instanz der alten Java-Klasse mit den konvertierten Parametern
- Konvertieren des Rückgabewerts der alten Java-Klasse in den Rückgabewerttyp, der von der generierten Java-Implementierungsmethode deklariert wird
- Diese Option wird für Auslastungsszenarios empfohlen, wobei die WSIF-Service-Proxys von neuen Java-Komponenten im Stil 6.0 verbraucht werden.
Wenn Sie eine der obenstehenden Optionen abgeschlossen haben, müssen Sie den Java-Service neu verbinden.
Es sollten keine
"Verweise" vorhanden sein, daher müssen Sie die Schnittstelle der Java-Komponente neu verbinden:
- Wenn dieser Service durch einen Geschäftsprozess in demselben Modul aufgerufen wird, stellen Sie eine Verbindung vom entsprechenden Geschäftsprozessverweis zur Schnittstelle dieser Java-Komponente her.
- Wenn dieser Service von einem Geschäftsprozess in einem anderen Modul aufgerufen wird, erstellen Sie einen Export mit SCA-Binding und ziehen und über geben Sie diesem Export vom anderen Modul zum Assembly-Editor dieses Moduls, um den entsprechenden Import mit SCA-Binding zu erstellen. Verbinden Sie den entsprechenden Geschäftsprozessverweis mit diesem Import.
- Wenn dieser Service in WebSphere Studio Application Developer
Integration Edition veröffentlicht wurde, um ihn extern zugänglich zu machen, finden Sie Informationen zur
Neuveröffentlichung dieses Services im Abschnitt "SCA-Exporte für den Zugriff auf den migrierten Service
erstellen".