Les composants avec modules peuvent utiliser des composants sur n'importe quel noeud d'un cluster 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.
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.