Professional Documents
Culture Documents
OUKILI
Problème
Construire des applications pour
entreprises
Sures
Sécurisées
Supportant la montée en charge (scalable)
Disponibles
Favorisant la réutilisation
Maintenables et extensibles
Pour moins cher
Moyen
Utiliser une architecture distribuée
Plusieurs tiers
Les clients (front end)
Les sources de données (back end)
Un ou plusieurs tiers entre eux pour
Implanter les nouveaux services
Intégrer les différentes sources de données
Masquer la complexité de l’entreprise aux clients
Architecture à composants
distribués
Permettent la construction d’applications
multi-tiers
Objectif
Simplifier la création d’application à base
d’objets distribués.
Promouvoir la programmation par composant
pour le coté serveur
Composant logiciel
Doit permettre la construction de logiciel
par composition
Exporte des propriétés et des méthodes
Peut être configuré de façon externe
Un composant peut être réutilisable à
différent degré
Composants connus :
COM/DCOM
Java Beans
Enterprise Java Beans
Composants Corba
Objet distribué (rmi)
Middleware Explicite
Implantations de la spec :
BEA WebLogic, Jonas, Borland Appserver, IBM Websphere,
Jboss (open source)
Composant développé pour être exécuté sur
un serveur d’EJB
Ne pas confondre avec un java bean
Les Enterprise JavaBeans
Objectifs des EJB
Fournir une plate-forme standard pour la
construction d’applications distribuées en
Java
Simplifier l’écriture de composants
serveurs
Portabilité
Considérer le développement, le
déploiement et l’exécution des applications
Division des
responsabilités
Le fournisseur de bean
Produit les composants métier
Le fournisseur de conteneur EJB
Fournit l’environnement permettant l’exécution
des beans
Le fournisseur de serveur EJB
Fournit l’environnement d’exécution pour un ou
plusieurs conteneurs
L’assembleur d’application
Le déployeur (installateur)
L’administrateur
Les Enterprise Beans
Composants qui peuvent être déployés dans un
environnement multi-tiers et distribué.
Exposent une interface qui peut être appelé par
ses clients
Configurés de façon externe
L’interface et l’implantation du bean doivent être
conforme à la spécification EJB
Les clients peuvent être
Un servlet
Une applet
Un autre bean
Les Enterprise Beans
Les types de Beans
Session Beans : contiennent la logique métier
de l’application
Stateful session bean
Stateless session bean
Entity Beans : contiennent la logique de
gestion des données persistantes
Message bean : contiennent la logique
orientée message
Session Bean
Fournit un service à un client
Durée de vie limitée à celle du client
Effectue des calculs ou des accès à une base
de donnée
Peut être transactionnel
Non recouvrable
Peuvent être sans état ou conversationnel
(stateless ou stateful)
Exemple de Session bean
public class CartBean implements SessionBean {
String customerName;
Vector contents;
public void ejbCreate(String person) throws CreateException {
… initialisation du bean
}
// business method
public void addBook(String title) { … // code de la méthode}
public void removeBook(String title) throws BookException {… }
public Vector getContents() {…}
}
La factory
Définit les méthodes permettant de créer, trouver
et détruire des objets EJB
shoppingCart.removeBook("Alice in Wonderland");
…
Home interface
public interface BookHome extends EJBHome
{
}
Le descripteur de
l’entity bean
<entity>
<display-name>Book</display-name>
<ejb-name>Book</ejb-name>
<home>BookHome</home>
<remote>Book</remote>
<ejb-class>BookEJB</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>java.lang.String</prim-key-class>
<reentrant>False</reentrant>
<cmp-field><field-name>title</field-name></cmp-field>
<cmp-field><field-name>author</field-name></cmp-field>
<cmp-field><field-name>price</field-name></cmp-field>
<primkey-field>title</primkey-field>
<query>
<description></description>
<query-method>
<method-name>findByAuthor</method-name>
<method-params><method-param>java.lang.String</method-
param></method-params>
</query-method>
<ejb-ql>select distinct object(b) from Book b where b.author=?1</ejb-
ql>
</query>
</entity>
Message Driven Bean
(ejb2.0)
Intégration des EJB et de JMS
Interactions asynchrones
Utilisé pour réagir à des messages JMS
Stateless bean
Une seule méthode dans l’interface
onMessage()
Exemple de message
bean
<message-driven>
<ejb-name>ValueContainerListener</ejb-name>
<ejb-class>hero.container.ValueContainerListener</ejb-class>
<message-selector>JMSType='ValueContainer'</message-selector>
<transaction-type>Container</transaction-type>
<ejb-ref>
<description>Value Container Home</description>
<ejb-ref-name>ejb/valuecontainer</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<ejb-link>ValueContainer</ejb-link>
<home>hero.container.ValueContainerHome</home>
<remote>hero.container.ValueContainer</remote>
</ejb-ref>
<message-driven-destination>
<destination-type>javax.jms.Topic</destination-type>
<subscription-durability>NonDurable</subscription-durability>
</message-driven-destination>
</message-driven>
Déploiement
Création d’un paquetage contenant
Les classes des beans
Le fichier de description
Les fichiers de configuration spécifique au
serveur
D’autres librairies
Mise en place dans le serveur (outils
spécifique ou déploiement à chaud)
Intérêt des EJB
Simplicité de l’écriture des composants
Mais le design est plus complexe
Portabilité des composants
A l’exception des adaptations des serveurs
Réutilisation/Composition
Il faut quand même programmer
Indépendance par rapport aux vendeurs
Bénéfices d’un serveur
d’EJB
Gestion automatisée des stocks de
ressources
Gestion automatisée du cycles de vie des
composants
Gestion de la concurrence
Scalabilité
Fonctionnalités déclaratives
Disponibilité et tolérance aux pannes
Modèle d’objet distribué
…
Limites actuelles (variables
selon les serveurs)
Maturité de la spécification, des technologies,
…
Moins vrai depuis la version 2.0
Performances ?
Environnements de développement
Complexité du design
Expérience des développeurs
Bibliographie et sources des
schémas
J2EE Specification
Java.sun.com/products/j2ee
Enterprise Java Beans Specification 1.1 et 2.0
Java.sun.com/products/ejb
Mastering Enterprise JavaBeans and the Java 2 Platform Enterprise
Edition – Ed Roman – Wiley Computer publishing 1999
www.theserverside.com
java.sun.com/j2ee/tutorial
www.jboss.org (serveur Open Source)
Support de cours de Didier Donsez (université de Valenciennes)
J2EE blueprints (java.sun.com)
Mastering Enterprise JavaBeans II – Ed Roman -
(www.theserverside.com)