14 août 2011

Jonas 5.2.1 : Qu'est-ce qu'un EJB ?

Plongée dans la lecture de mes polys de formation sur "Jonas", je me demande bien ce qu'est un EJB. J'ai donc (en plus de lire mon poly) cherché sur le net des définitions, des explications, des exemples. Cet article aura pour but de regrouper un peu tout ça.

EJB, c'est pour Enterprise Javabeans, mais encore ? me direz-vous ? A ce stade de l'article, je ne le sais pas encore :)

Sur le site d'Oracle, la définition officielle est, et en anglais s'il vous plaît : "Enterprise JavaBeans (EJB) technology is the server-side component architecture for Java Platform, Enterprise Edition (Java EE). EJB technology enables rapid and simplified development of distributed, transactional, secure and portable applications based on Java technology"

Sur le site developpez.com, j'ai trouvé une explication beaucoup plus simple à comprendre et résumée dans un seul schéma, chapeau l'artiste ! Voyez par vous-mêmes :

Screenshot_ejb3_ppt

Sur wikipedia, 3ie.fr et developpez.com, j'ai pu comprendre qu'il existait trois types d'EJB :

  • EJB "session" qui s'occupe de tout ce qui est traitement. Il y en a deux sortes : stateless session bean (exemple : conversion euros/dollars) et stateful session bean (exemple : panier électronique). Pour le stateless session bean, les attributs de l'ejb sont réinitialisés à chaque appel même s'il s'agit du même client. Pour le stateful session bean, les attributs de l'ejb sont sauvegardées durant toute la session.
  • EJB "entité" qui s'occupe de la partie données. Il représente un objet métier persistent, exemples : compte bancaire, commande, article, client, achat). Il y a deux moyens de gérer la persistence : CMP et BMP. CMP pour Container Managed Persistence et BMP pour Bean Managed Persistence. Soit la persistence est gérée au niveau du conteneur d'ejb, soit elle est gérée par l'application elle-même (ie par le développeur).
  • EJB "message-driven" qui va traiter les données de manière asynchrone. Exemples de produits implémentant ce mécanisme : IBM WebSphere MQ (anciennement MQSeries), JBoss Messaging (qui remplacera JBoss MQ), etc.

Les objets EJB écrits en java sont gérés par un serveur applicatif (Jonas par exemple). C'est le serveur applicatif qui a en charge la création, la destruction, la passivation ou l'activation de ses composants en fonction des besoins.

Pour rendre possible l'exécution d'EJB dans Jonas, il faut activer le ou les services en question dans le fichier jonas.properties. La ligne correspondant aux services est celle-ci (en rouge les mentions correspondant à l'ejb) :

jonas.services    jtm,db,resource,ejb2,ejb3,jaxws,web,ear,depmonitor

Il y a deux versions d'ejb mentionnés dans le fichier properties, dans le doute activez les deux. Puis redémarrez votre jonas, dans mon cas ce sera :

cd $JONAS_ROOT

jonas stop

jonas start

Il y a deux manières d'accéder à un EJB, en local et en remote (à distance). En local => appel à un EJB se trouvant dans la même JVM. En remote => utilise RMI (Remote Method Invocation) et JNDI (Java Naming and Directory Interface).

Le numéro de port est défini dans carol.properties, allons y jeter un coup d'oeil de suite :

# jonas rmi activation (protocole jrmp)
carol.protocols=jrmp

# RMI JRMP URL
carol.jrmp.url=rmi://localhost:1099

Nous verrons dans un prochain article comment exécuter un EJB dans Jonas 5.2.1.

----------

Mes sources :

http://fr.wikipedia.org/wiki/Enterprise_JavaBeans

http://www.3ie.fr/nouvelles_technologies/fiche/fiche_EJB.htm

http://www.oracle.com/technetwork/java/javaee/ejb/index.html

http://liris.cnrs.fr/yannick.prie/ens/04-05/MIAG-SIA/CM_SIA_8.pdf

http://clio.developpez.com/tutoriels/java/jee/ejb-3/

http://www.devx.com/Java/Article/20843

Posté par fatihaelh à 03:38 - Jonas - Commentaires [0] - Permalien [#]

Commentaires

Poster un commentaire