Cette rubrique présente en détail l'architecture de composant répartie définie dans la spécification d'architecture Sun Microsystems Enterprise JavaBeans 2.x (EJB).
Les caractéristiques de JavaBeans d'entreprise et des descriptions complètes de la technologie sont fournies par le site Web du programme de java.sun.com.
Les beans enterprise offrent de nombreux avantages aux développeurs d'applications. Par exemple :
- Ils permettent de créer des applications réparties en combinant des composants développés à l'aide d'outils issus de différents fournisseurs.
- Ils facilitent l'écriture d'applications. Vous n'êtes pas obligé de traiter les détails de bas niveau de la gestion des états temporaires et des transactions, de la fonction de traitement multitâche, du regroupement des ressources en pools, ainsi que d'autres API complexes de bas niveau. Toutefois, si nécessaire, les programmeurs chevronnés peuvent toujours accéder directement aux API de bas niveau.
- Ils peuvent être développés une fois, puis déployés sur plusieurs plateformes sans recompilation ni modification du code source.
- Ils permettent une compatibilité entre la spécification EJB qui régit l'utilisation des beans enterprise et d'autres API Java et CORBA. Ils assurent également l'interopérabilité des beans enterprise et des applications non Java.
- Beans enterprise
- Un bean enterprise est un composant non visible d'une application d'entreprise répartie et orientée côté transaction. Les beans enterprise sont généralement déployés dans des conteneurs EJB et exécutés sur des serveurs EJB. Vous pouvez les personnaliser en modifiant leurs descripteurs de déploiement, et les associer à d'autres beans afin de créer des applications.
Il existe trois types de bean enterprise : beans session, beans entity et beans gérés par message. Les beans session et les bean gérés par message sont des composants à granularité grossière conçus pour modéliser des processus métier, alors que les beans entity permettent de modéliser des objets donnée à granularité fine.
- Beans session : Les beans session sont des beans enterprise non persistants.
Ils peuvent être avec ou sans état.
- Beans session avec état : Ils agissent pour un client unique et gèrent les informations de session propres au client (également appelées état conversationnel) entre plusieurs transactions et appels de méthode. Ils existent pendant la durée d'une session client/serveur unique.
- Beans session sans état : Ils ne conservent aucun état conversationnel et sont regroupés en pools par leur conteneur afin de gérer plusieurs demandes provenant de différents clients.
- Beans entity : Ce sont des beans enterprise qui contiennent des données persistantes et peuvent être enregistrés dans différentes zones de stockage permanent des données. Chaque bean entity est doté de sa propre identité. Les beans entity qui gèrent leur propre persistance sont nommés beans entity à persistance gérée par le bean. Ceux qui délèguent leur persistance à leur conteneur EJB sont désignés sous le nom de beans entity à persistance gérée par conteneur.
- Beans gérés par message : Il s'agit de beans enterprise qui reçoivent et traitent les messages JMS. Contrairement aux beans session ou entity, les beans gérés par message ne comportent pas d'interface. Ils sont accessibles uniquement via la messagerie et ne gèrent aucun état conversationnel. Les beans gérés par message permettent la communication asynchrone entre la file d'attente et le programme d'écoute, et séparent le traitement des messages et la logique applicative.
- Vue de client distant
- La spécification de la vue de client distant est disponible à partir d'EJB 1.1. La vue de client distant d'un bean enterprise ne dépend pas de l'emplacement.
Un client exécuté sur la même machine virtuelle Java qu'une instance de bean utilise, pour accéder au bean, la même API qu'un client exécuté sur une machine virtuelle Java différente se trouvant sur le même ordinateur ou sur un autre poste.
La vue de client distant est composée de deux interfaces :
- Interface distante : Elle définit les méthodes métier distantes qu'un client peut appeler sur un bean enterprise.
- Interface home distante : Elle définit les méthodes utilisées par les clients distants pour localiser, créer et supprimer des instances de classes de bean enterprise.
- Vue de client local
- La spécification de la vue de client local est disponible à partir d'EJB 2.0 ou version ultérieure.
Contrairement à la vue de client distant, la vue de client local d'un bean dépend de l'emplacement. Pour que la vue de client local puisse accéder à un bean enterprise, le client local et le bean enterprise qui fournit la vue correspondante doivent se trouver sur la même machine virtuelle Java. Par conséquent, la vue de client local ne fournit pas la transparence en termes d'emplacement qu'offre la vue de client distant. Les interfaces locales et les interfaces home locales assurent la prise en charge d'un accès simple à des beans enterprise de type clients locaux. Les beans session et entity peuvent être étroitement liés à leurs clients ; ils offrent ainsi un accès en évitant toute surcharge généralement associée aux appels de méthode distants. La vue de client local est composée de deux interfaces :
- Interface locale : Version allégée de l'interface distante, elle est destinée aux clients locaux. Elle inclut des méthodes de logique applicative qui peuvent être appelées par un client local.
- Interface home locale : Elle définit les méthodes utilisées par les clients locaux pour localiser, créer et supprimer des instances de classes de bean enterprise.
- Vue de client de service Web
- Dans la spécification EJB 2.1, l'architecture EJB a introduit la prise en charge des services Web. Le client d'un bean session peut être un client de service Web.
Un client de service Web peut utiliser la vue de client de service Web d'un bean session sans état, laquelle comporte une interface de point d'extrémité de service correspondante.
- Interface de point d'extrémité de service
- L'interface de point d'extrémité de service d'un bean session sans état expose la fonctionnalité du bean session sous la forme d'un point d'extrémité de service Web. Le document WSDL (Web Service Description Language) relatif à un service Web décrit ce dernier en tant qu'ensemble de points d'extrémité appliqué aux messages. Un document WSDL peut inclure l'interface de point d'extrémité de service d'un bean session sans état comme étant l'un de ses points d'extrémité.
Un bean session sans état existant peut être modifié de manière à inclure une vue de client de service Web ; il est également possible de mapper une interface de point d'extrémité de service à partir d'un document WSDL existant afin de fournir l'interface correcte.
Une vue de client de service Web ne dépend pas de l'emplacement et est accessible via des appels distants.
- Fichier JAR de client EJB
- Un fichier JAR de client EJB est un fichier JAR facultatif qui peut contenir les interfaces client dont a besoin un programme client pour utiliser les vues client des beans enterprise inclus dans le fichier JAR d'EJB. Lorsque vous ne créez pas de fichier JAR de client EJB pour un module EJB, toutes les classes d'interface client se trouvent dans le fichier JAR d'EJB. Par défaut, le plan de travail crée des projets JAR de client EJB pour chaque projet EJB correspondant.
- Conteneur EJB
- Un conteneur EJB est un environnement d'exécution qui gère un ou plusieurs beans enterprise. Il gère les cycles de vie des objets de type beans enterprise, coordonne les transactions réparties et implémente la sécurité des objets. En règle générale, chaque conteneur EJB est fourni par un serveur EJB et contient un ensemble de beans enterprise exécutés sur le serveur.
- Descripteur de déploiement
- Un descripteur de déploiement est un fichier XML regroupé avec les beans enterprise dans un fichier JAR d'EJB ou un fichier EAR. Il contient les métadonnées qui décrivent le contenu et la structure des beans enterprise, ainsi que des informations sur les transactions d'exécution et la sécurité d'un conteneur EJB.
- Serveur EJB
- Un serveur EJB est une application ou un processus de haut niveau qui fournit un environnement d'exécution pour la prise en charge de l'exécution des applications serveur qui utilisent des beans enterprise. Il fournit un service d'attribution de noms accessible via JNDI, gère et coordonne l'allocation de ressources pour les applications client, offre un accès aux ressources système et propose un service de transactions. Un serveur EJB peut être fourni, par exemple, par une base de données ou un serveur d'applications.