WebSphere Enterprise Service Bus, Version 6.2.0 Systèmes d'exploitation: AIX, HP-UX, i5/OS, Linux, Solaris, Windows


Appel de composants

Les composants avec modules peuvent utiliser des composants sur n'importe quel noeud d'un cluster WebSphere ESB.

Avant de commencer

Avant d'appeler un composant, assurez-vous que le module qui contient le composant est installé sur WebSphere ESB.

Pourquoi et quand exécuter cette tâche

Les composants peuvent utiliser n'importe quel composant de service disponible dans un cluster WebSphere ESB en utilisant le nom du composant et en transférant le type de données qu'attend le composant. L'appel d'un composant dans cet environnement implique la localisation, puis la création de la référence vers le composant nécessaire.
Remarque : Un composant de module peut appeler un composant à l'intérieur du même modèle : cette opération s'appelle un appel intra-module. Implémentez les appels externes (appels inter-modules) en exportant l'interface dans le composant fournisseur et en important l'interface dans le composant appelant.
Important : Lors de l'appel d'un composant résidant sur un serveur autre que le serveur sur lequel s'exécute le module appelant, vous devez apportez des modifications de configuration à ces deux serveurs. Les configurations requises dépendent du mode d'appel du composant (appel asynchrone ou appel synchrone). La procédure de configuration spécifique des serveurs d'applications est décrite dans les tâches associées.
Procédure
  1. Déterminer les composants requis par le module appelant.

    Notez le nom de l'interface dans un composant et le type de données dont l'interface a besoin.

  2. Définir un objet de données.

    Bien que l'entrée ou le retour puisse être une classe Java™, l'idéal est un objet de données de service.

  3. Localiser le composant.
    1. Utiliser la classe ServiceManager pour obtenir les références disponibles pour le module appelant.
    2. Utiliser la méthode locateService() pour trouver le composant.

      En fonction du composant, l'interface peut être soit un type de port WSDL (Web Service Descriptor Language), soit une interface Java.

  4. Appeler le composant de manière synchrone.

    Vous pouvez soit appeler le composant par le biais d'une interface Java, soit utiliser la méthode invoke() pour appeler le composant de manière dynamique.

  5. Traiter le retour.

    Le composant peut générer une exception, aussi le client doit-il être capable de traiter cette possibilité.

Exemple d'appel d'un composant

L'exemple suivant permet de créer une classe ServiceManager.
ServiceManager serviceManager = new ServiceManager();
Cet exemple utilise la classe ServiceManager pour obtenir une liste de composants à partir d'un fichier contenant les références des de composants.
InputStream myReferences = new FileInputStream("MyReferences.references");
ServiceManager serviceManager = new ServiceManager(myReferences);
Le code suivant localise un composant qui implémente l'interface Java StockQuote.
StockQuote stockQuote = (StockQuote)serviceManager.locateService("stockQuote");
Le code suivant localise un composant qui implémente soit une interface Java, soit une interface de type de port WSDL. Le module appelant utilise l'interface Service afin d'interagir avec le composant.
Conseil : Si le composant implémente une interface Java, il peut être appelé à l'aide de l'interface ou de la méthode invoke().
Service stockQuote = (Service)serviceManager.locateService("stockQuote");
L'exemple suivant illustre le code MyValue, qui appelle un autre composant.
public class MyValueImpl implements MyValue {

	public float myValue throws MyValueException {
		
		ServiceManager serviceManager = new ServiceManager();

	    // variables
	        Customer customer = null;
	        float quote = 0;
	        float value = 0;

	    // invoke
	        CustomerInfo cInfo = (CustomerInfo)serviceManager.locateService("customerInfo");
	        customer = cInfo.getCustomerInfo(customerID);

	    if (customer.getErrorMsg().equals("")) {

	        // invoke
	    		StockQuote sQuote = 
						(StockQuote)serviceManager.locateService("stockQuote");
	    		Ticket ticket =  sQuote.getQuote(customer.getSymbol());
				// … do something else …
	    		quote =  sQuote.getQuoteResponse(ticket, Service.WAIT);

	        // assign
	        	value = quote * customer.getNumShares();
	    } else {

	        // throw
	       	throw new MyValueException(customer.getErrorMsg()); 
	    }
	    // reply
	        return value;
	}
}

Que faire ensuite

Configurez les connexions entre les références de module appelant et les interfaces de composant.

task Rubrique relative à une tâche

Conditions d'utilisation | Commentaires en retour


Icône d'horodatage Dernière mise à jour: 07 juillet 2010


http://publib.boulder.ibm.com/infocenter/dmndhelp/v6r2mx/topic//com.ibm.websphere.wesb620.doc/doc/tdev_devclientcomps.html
Copyright IBM Corporation 2005, 2010. All Rights Reserved.
Ce centre d'information est mis en service par la technologie Eclipse (http://www.eclipse.org).