Die benutzerdefinierte Java-Komponente erstellen: Option 1

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:
  1. 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.
  2. 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.
  3. Eine generische Komponente wird im Assemblydiagramm angezeigt. Markieren Sie sie und gehen Sie zur Ansicht 'Eigenschaften'.
  4. Sie können den Namen und Anzeigenamen der Komponente in einen beschreibenden Namen in der Registerkarte 'Beschreibung' ändern.
  5. 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.
  6. 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.
  7. 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.
  8. Klicken Sie im Assembly-Editor mit der rechten Maustaste auf die Komponente, die Sie soeben erstellt haben, und wählen Sie 'Implementierung generieren…' > 'Java'. 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:
  1. Relevante Definitionen aus der 5.1 WSDL-Schnittstelle
  2. Die WebSphere Studio Application Developer Integration Edition 5.1 Java-Methoden, die der WSDL entsprechen
  3. 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:
  1. 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.
  2. Erstellen Sie eine private Instanz der alten Java-Klasse in dieser generierten Java-Klasse und schreiben Sie Code, um Folgendes zu tun:
    1. Konvertieren aller Parameter der generierten Java-Implementierungsklasse in Parameter, die die alte Java-Klasse erwartet
    2. Aufrufen der privaten Instanz der alten Java-Klasse mit den konvertierten Parametern
    3. Konvertieren des Rückgabewerts der alten Java-Klasse in den Rückgabewerttyp, der von der generierten Java-Implementierungsmethode deklariert wird
    4. 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".
Zugehörige Tasks
SCA-Exporte für den Zugriff auf den migrierten Service erstellen

Feedback
(C) Copyright IBM Corporation 2005, 2006. Alle Rechte vorbehalten.