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


Liaisons EJB : présentation générale

La liaison d'importation EJB permet à un module SCA (Service Component Architecture) d'appeler une implémentation EJB à partir de systèmes externes.

Liaisons d'importation EJB

Les liaisons d'importation EJB permettent à un module SCA d'appeler des implémentations EJB en indiquant la manière dont le module utilisateur est lié au composant d'importation. Exemple :
  • Composant SCA -> importation EJB 2.1 == RMI/IIOP ==> EJB 2.1

L'importation de services à partir d'une implémentation EJB externe (implémentation EJB extérieure au module) permet aux utilisateurs de relier leur logique métier à l'environnement Process Server WebSphere et de participer à un processus métier. Deux types de scénario d'utilisation pour la liaison d'importation EJB sont pris en charge :

L'importation EJB contient les principaux composants suivants. JAXWSDataHandler, EJBFaultSelector et EJBImportFunctionSelector sont fournis par l'environnement Process Server WebSphere.
Tableau 1. Principaux composants des liaisons d'importation EJB
Composant Objectif
Implémentation EJB Bean EJB qui implémente l'interface métier
Nom JNDI Recherche la référence EJB
Gestionnaire de données JAX-WS Effectue la transformation des données nécessaire au serveur pour convertir des objets Java™ en objets métier (unidirectionnelle) ou des données de réponse en objets métier (bidirectionnelle). Ces gestionnaires de données mappent les données de l'architecture SCA à Java à l'aide de spécifications JAX-WS et JAXB.
Remarque : Pour personnaliser le mappage du type XSD aux types Java définis par la spécification JAX-WS, modifiez les annotations JAXB selon les besoins de votre entreprise. JAXWSDataHandler prend en charge xs:any, xs:anyType et xs:anySimpleType. Le support actuel est limité aux spécifications JAX-WS 1.0 et JAXB 2.0.
Sélecteur d'erreurs EJB Détermine si un appel EJB a engendré une erreur, une exception d'exécution ou une réponse correcte. Si une erreur est détectée, le sélecteur d'erreurs renvoie le nom de l'erreur native au serveur afin que JAXWSDataHandler puisse convertir l'objet exception en objet métier d'erreur.
Sélecteur de fonction d'importation EJB Dérive le type de méthode EJB en fonction du nom de méthode WSDL appelé par un composant SCA lors de l'importation EJB. S'il est présent, il utilise l'annotation @WebMethod pour déterminer le mappage correct de la méthode Java pour la méthode WSDL. Si l'annotation @WebMethod est manquante, le sélecteur de fonction renvoit une méthode Java d'un nom identique à celui de la méthode WSDL.

Si votre scénario utilisateur ne prend pas en charge JAX-WS et nécessite un mappage personnalisé, un gestionnaire de données, un sélecteur de fonction et un sélecteur d'erreur personnalisés peuvent s'avérer nécessaires pour accomplir les tâches habituellement dévolues à JAXWSDataHandler, EJBFaultSelector et EJBImportFunctionSelector. Ces tâches incluent le mappage normalement effectué par l'algorithme de mappage personnalisé.

Contrat du gestionnaire de données

Dans les circonstances nécessitant une transformation des données, le contrat entre une liaison EJB et le gestionnaire de données est réalisé au moyen d'un tableau d'objets Java (Object[]).

Lors des communications sortantes, les opérations suivantes ont lieu :
  1. La liaison EJB définit le type et l'élément attendus ainsi que le nom de la méthode ciblée dans BindingContext, afin qu'ils soient identiques à ceux spécifiés dans le fichier WSDL.
  2. La liaison EJB appelle la méthode de transformation pour l'objet de données nécessitant une transformation des données.
  3. Le gestionnaire de données renvoit un tableau Object[] représentant les paramètres de la méthode (listés dans l'ordre suivant lequel ils sont définis dans la méthode).
  4. La liaison EJB utilise le tableau Object[] pour appeler la méthode sur l'interface EJB cible.

La liaison prépare un objet[] pour traiter la réponse à partir de l'appel EJB. Le premier élément dans l'objet[] correspond à la valeur renvoyée par l'appel de méthode Java. Les valeurs suivantes représentent les paramètres d'entrée de la méthode. Ces dernières sont nécessaires pour prendre en charge les paramètres de type entrée/sortie et sortie. Pour les paramètres de type sortie, la valeur doit être renvoyée dans l'objet de données de réponse. Le gestionnaire de données traite et transforme les valeurs rencontrées dans l'objet[], puis renvoie une réponse à l'objet de données.

Le gestionnaire de données spécifié au niveau de la liaison EJB est utilisé pour traiter les demandes, les réponses, ainsi que les exceptions d'erreur et d'exécution. Pour les erreurs, un gestionnaire de données propre peut être spécifié pour chaque erreur en indiquant la propriété de configuration faultBindingType. Cette dernière remplace la valeur spécifiée au niveau de la liaison EJB.

Gestionnaire de données JAX-WS

Le gestionnaire de données JAX-WS est utilisé par défaut lorsque la liaison EJB dispose d'une interface WSDL. Ce gestionnaire de données est conforme à la spécification JAX-WS (API Java API pour le service Web basé XML) et utilisé pour convertir l'appel de méthode WSDL en appel de méthode Java pour l'importation (traitement d'événement sortant). Il gère également la conversion des exceptions Java en objets de données d'erreur à des fins de traitement des erreurs et pour les exceptions d'exécution lorsque le sélecteur d'erreurs renvoie des exceptions de type ResponseType.RUNTIME. Ce gestionnaire de données ne peut pas être utilisé pour transformer un message SOAP représentant un appel JAX-WS en objet de données.

Le gestionnaire de données prend en charge xs:AnyType, xs:AnySimpleType, and xs:Any, ainsi que d'autres types de données XSD. Pour activer la prise en charge de xs:Any, utilisez @XmlAnyElement (lax=true) pour la propriété du bean dans le code Java. Par exemple,
public class TestType {
	private Object[] object;

	@XmlAnyElement (lax=true)
	public Object[] getObject() {
		return object;
	)

	public void setObject (Object[] object) {
		this.object=object;
	)
)
Cela permet de transformer l'objet de propriété dans TestType en champ xs:any. La valeur de classe Java utilisée dans le champ xs:any doit inclure l'annotation @XmlAnyElement. Par exemple, si Adresse est la classe Java utilisée pour remplir la matrice d'objets, elle doit comporter l'annotation @XmlRootElement.
Les restrictions suivantes s'appliquent au gestionnaire de données JAX-WS :
  • Aucune prise en charge de l'annotation @WebParam de l'attribut d'en-tête.
  • L'espace de noms pour les fichiers de schéma des objet métiers (fichiers XSD) n'inclut pas le mappage par défaut du nom de package Java. L'annotation @XMLSchema dans package-info.java ne fonctionne pas non plus. La seule manière de créer un fichier XSD avec un espace de nom consiste à utiliser les annotations @XmlType et XmlRootElement. @XmlRootElement définit le nom d'espace cible pour l'élément global dans les beans de type Java.
  • L'assistant d'importation EJB ne crée pas de fichiers XSD pour les classes non associées. La version 2.0 ne prend pas en charge l'annotation @XmlSeeAlso. Par conséquent, si la classe enfant n'est pas directement référencée par la classe parente, aucun fichier XSD n'est créé. La solution à ce problème consiste à exécuter SchemaGen pour ces classes enfants. SchemaGen est un utilitaire de ligne de commande permettant de créer des fichiers XSD pour un bean Java donné. Cet utilitaire est situé dans le répertoire WPS_Install_Home/bin. Ces fichiers XSD doivent être manuellement copiés vers le module Business Integration pour que la solution fonctionne.

Contrat du gestionnaire d'erreurs

Le contrat entre une liaison EJB et le gestionnaire d'erreurs est réalisé au moyen d'un tableau d'objets Java (Object[]).

Si l'importation réussit, la liaison assemble un objet[]. Le premier élément de l'objet[] est la valeur renvoyée par l'appel de méthode Java. Les valeurs suivantes représentent les paramètres d'entrée de la méthode. Ces dernières sont nécessaires pour prendre en charge les paramètres de type entrée/sortie et sortie.

Pour les scénarios d'exception, la liaison assemble un objet[] et le premier élément représente l'exception générée par la méthode. Le sélecteur d'erreurs peut renvoyer l'une des valeurs suivantes :
Tableau 2. Valeurs renvoyées par le gestionnaire d'erreurs
Type Valeur renvoyée
Erreur ResponseType.FAULT
Exceptions d'exécution ResponseType.RUNTIME
Réponse normale ResponseType.RESPONSE
Si le sélecteur d'erreurs renvoie la valeur ResponseType.FAULT, getFaultName() doit renvoyer le nom d'erreur natif. Ce nom est utilisé par la liaison pour déterminer le nom d'erreur WSDL correspondant à partir du modèle et appeler le gestionnaire de données d'erreur approprié.

Sélecteur d'erreurs EJB

Ce dernier suit le contrat du sélecteur d'erreurs avec la liaison d'importation EJB. Il renvoie ResponseType.BUSINESSFAULT si l'objet[] transmis contient un objet d'exception. Si l'objet d'exception ne correspond à aucun des types d'exception déclarés sur la méthode, il renvoie ResponseType.RUNTIME_EXCEPTION. Sinon, il renvoie ResponseType.RESPONSE.

Contrat du sélecteur de fonction d'importation

Le contrat entre une liaison EJB et le sélecteur de fonction d'importation est réalisé au moyen d'un tableau d'objets Java (Object[]).

Le premier élément de l'objet[] est le nom du langage WSDL. Le deuxième élément de l'objet[] est l'objet métier d'entrée. Le sélecteur de fonction renvoie un objet java.lang.reflect.Method qui représente la méthode de l'interface EJB.

Sélecteur de fonction d'importation EJB

Ce sélecteur de fonction suit le contrat du sélecteur de fonction avec la liaison d'importation EJB. Le premier élément de l'objet[] est une méthode Java incluant le nom du langage WSDL. Il suit les annotations JAX-WS pour dériver la méthode Java d'une méthode WSDL donnée et utilise les annotations de l'objet de données d'entrée pour dériver le nom de la classe Java qui définit l'interface EJB.


concept Rubrique concept

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/cadm_slsbbindinggeneral.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).