Créer un composant personnalisé Java : option 1

La technique de migration recommandée est d'utiliser le type de composant WebSphere Integration Developer Java qui permet de représenter le service Java en tant que composant SCA. Au cours de la migration, vous devez écrire un code Java pour faire la conversion entre le style d'interface Java SCA et le style d'interface Java existant du composant.

Pour créer le composant Java personnalisé :
  1. Sous le projet de module, développez Interfaces et sélectionnez l'interface WSDL créée pour cette classe Java dans WebSphere Studio Application Developer Integration.
  2. Faites glisser cette interface dans l'éditeur d'assemblage. Une boîte de dialogue vous demande de sélectionner le type de composant à créer. Sélectionnez Composant sans type d'implémentation et cliquez sur OK.
  3. Un composant générique apparaît dans le diagramme de l'assemblage. Sélectionnez-le et passez dans la vue Propriétés.
  4. Dans l'onglet Description, vous pouvez remplacer le nom et le nom d'affichage du composant par un nom plus descriptif.
  5. Dans l'onglet Détails, vous verrez que ce composant a une interface, celle que vous avez fait glisser dans l'éditeur d'assemblage.
  6. Vérifiez que la classe Java à laquelle vous tentez d'accéder est dans le chemin de classe du projet de service, si elle n'est pas dans le projet de service lui-même.
  7. Avec le bouton droit, cliquez sur le projet de module et sélectionnez Ouvrir l'éditeur de dépendances. Vérifiez que le projet contenant l'ancienne classe Java apparaît dans la section Java. Dans la négative, ajoutez-le en cliquant sur le bouton Ajouter.
  8. De retour dans l'éditeur d'assemblage, avec le bouton droit, cliquez sur le composant que vous venez de créer et sélectionnez Générer l'implémentation > Java. Sélectionnez ensuite le module dans lequel l'implémentation Java sera générée. Ceci crée une structure de service Java compatible avec l'interface WSDL et le modèle de programmation SCA dans laquelle les types complexes sont représentés par un objet commonj.sdo.DataObject et les types simples sont représentés par des objets Java équivalents.
Les exemples de code suivants montrent :
  1. les définitions correspondantes issues de l'interface WSDL 5.1 ;
  2. les méthodes Java de WebSphere Studio Application Developer Integration Edition 5.1 qui correspondent à WSDL ;
  3. les méthodes Java de WebSphere Integration Developer 6.0 pour WSDL.
Le code suivant montre les définitions correspondantes issues de l'interface WSDL 5.1 :
<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>

	<part name="symbol" type="xsd:string"/>
	<schema xmlns="http://www.w3.org/2001/XMLSchema"
</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>
Le code suivant montre les méthodes Java de WebSphere Studio Application Developer Integration Edition 5.1 qui correspondent à WSDL :
public StockInfo getStockInfo(String symbol)
	{
		return new StockInfo();
	}

	public void setStockPrice(String symbol, float newPrice)
	{
		// set some things
	}
Le code suivant montre les méthodes Java de WebSphere Integration Developer 6.0 pour 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.
	}
Vous devez ensuite remplir les lignes de code contenant "//TODO" dans la classe d'implémentation Java générée. Vous avez deux options :
  1. Transférer la logique de la classe Java d'origine vers cette nouvelle classe en l'adaptant aux objets DataObjects.
    • C'est l'option recommandée si vous avez choisi l'approche partant du haut dans WebSphere Studio Application Developer Integration Edition et que vous voulez que votre composant Java puisse gérer les paramètres DataObject. Cette modification est nécessaire car les classes Java générées à partir des définitions WSDL dans WebSphere Studio Application Developer Integration Edition ont des dépendances WSIF qui doivent être éliminées.
  2. Créez une instance privée de l'ancienne classe Java à l'intérieur de la nouvelle classe Java et écrivez un code pour :
    1. convertir tous les paramètres de la classe d'implémentation Java générée en paramètres compatibles avec l'ancienne classe Java ;
    2. appeler l'instance privée de l'ancienne classe Java avec les paramètres convertis ;
    3. convertir la valeur de retour de l'ancienne classe Java dans le type de valeur de retour déclarée par la méthode d'implémentation Java générée.
    4. Cette option est recommandée pour les scénarios de consommation dans lesquels les proxy de service WSIF doivent être utilisés par des nouveaux composants Java de type 6.0.
Quand vous avez terminé l'une des options ci-dessus, vous devez reconnecter le service Java. En l'absence de référence, il vous suffit de reconnecter l'interface du composant Java :
  • Si ce service est appelé par un processus métier situé dans le même module, vous devez créer une connexion entre la référence de processus métier appropriée et l'interface de ce composant Java.
  • Si ce service est appelé par un processus métier situé dans un autre module, créez une exportation avec liaison SCA et à partir de l'autre module, effectuez un glisser-déposer de cette exportation vers l'éditeur d'assemblage de ce module pour créer l'importation avec liaison SCA correspondante. Connectez la référence de processus métier appropriée à cette importation.
  • Si ce service a été publié dans WebSphere Studio Application Developer Integration Edition pour faire l'objet d'une exposition externe, voir la section "Création d'exports SCA afin d'accéder au service migré" pour savoir comment le publier de nouveau.
Tâches associées
Création d'exports SCA afin d'accéder au service migré

Commentaires
(C) Copyright IBM Corporation 2005. Tous droits réservés.