Introduction Aux Ejb

  • Uploaded by: nida2008
  • 0
  • 0
  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Introduction Aux Ejb as PDF for free.

More details

  • Words: 1,427
  • Pages: 42
Par Oussama IDRISSI 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

transfer(Account account1, Account account2, long amount) { // 1: Call middleware API to perform a security check // 2: Call middleware API to start a transaction // 3: Call middleware API to load rows from the database // 4: Subtract the balance from one account, add to the other // 5: Call middleware API to store rows In the

Architecture 3-tiers

Les solutions existantes Microsoft DNA (Distributed interNet

Applications Architecture)

Windows NT + DCOM + MSMQ (message

queue) + MTS (transactions) + Wolfpack (clustering) + IIS (web server)+ MMC (administration et déploiement)

Sun J2EE (spécification) OMG Corba (specification) et les composants

Corba.

J2EE Définit une architecture standard incluant Un modèle de programmation (application multi-tiers, client légers) Une plate-forme (ensemble de spécifications et de politiques requises) Un ensemble de test de compatibilité Une implantation de référence

Architecture d’une application J2EE

La plateforme J2EE  EJB : définit la façon dont les composant doivent être écrit et le

contrat qu’ils doivent respecter avec le serveur d’application  RMI : communication inter procédés  JNDI : service de nommage  JDBC : connection vec les bases de données  JTA : service de transaction  JMS : service de messagerie  JSP : servlet et Java Server Page adapté à la construction de composant réseau  Java IDL : permet l’intégration avec d’autres langages (en particulier à travers CORBA)  JavaMail  Connectors : intégration à des systèmes d’information existant  XML

Les Enterprise JavaBeans Spécification d’une architecture permettant

la création d’applications distribuées

2 versions  1.1 : la plus courante  3.0 : la plus récente 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() {…} // methodes appelées par le conteneur public void ejbRemove() {} public void ejbActivate() {} public void ejbPassivate() {} public void setSessionContext(SessionContext sc) {} }

L’interface L’interface décrit le contrat avec les clients public interface Cart extends EJBObject { public void addBook(String title) throws RemoteException; public void removeBook(String title) throws BookException, RemoteException; public Vector getContents() throws RemoteException; }

La factory Définit les méthodes permettant de créer, trouver

et détruire des objets EJB public interface CartHome extends EJBHome { Cart create(String person) throws RemoteException, CreateException; }

Le descripteur de déploiement

 Fournit les informations nécessaires au déploiement dans le

conteneur et pour la configuration des intercepteurs <enterprise-beans> <session> CartEJB <ejb-name>CartEJB CartHome Cart <ejb-class>CartBean <session-type>Stateful Container <security-identity> <description> <use-caller-identity>

Déploiement (suite) <method-permission> user <method> <ejb-name>CartEJB <method-intf>Remote <method-name>getContents <method-params /> <method> <ejb-name>CartEJB <method-intf>Remote <method-name>getContents <method-params /> Required

Le client public class CartClient { public static void main(String[] args) { Context initial = new InitialContext(); // context JNDI

CartHome home = initial.lookup("java:comp/env/ejb/SimpleCart"); // Recherche de l’interface de la factory // Creation de l’objet session

Cart shoppingCart = home.create("Duke DeEarl« xs); // appel de quelques business méthodes

shoppingCart.addBook("The Martian Chronicles"); Vector bookList = new Vector(); bookList = shoppingCart.getContents();

shoppingCart.removeBook("Alice in Wonderland"); // suppression de l’objet session

shoppingCart.remove(); }

Les entity beans Implantation d’objets métiers persistants

(client, compte,…) Persistance gérée par

Les conteneurs (CMP) Le bean lui-même (BMP)

Le conteneur gère également les

transactions et la sécurité pour le composant. Utile pour gérer les accès concurrents à des données persistantes.

Exemple d’entity bean (CMP) public class BookEJB implements javax.ejb.EntityBean { public String author; public String titlel; public int price; private EntityContext context; public String getTitle() {return title;} public String getAuthor() {return author;}; public int getPrice() {return price;} public void setPrice(int _price) {price=_price;} public String ejbCreate (String _author, String _title) throws CreateException { author=_author; title=_title; price=0; return null; } …

… // Méthodes requises par le conteneur public void ejbPostCreate(String _author,String _title) { } public void ejbRemove() { } public void ejbLoad() { } public void ejbStore() {} public void setEntityContext(EntityContext context) { this.context = context;} public void unsetEntityContext() { context=null; } public void ejbActivate() { } public void ejbPassivate() { } }

Home interface public interface BookHome extends EJBHome { public Book create(String id, String url) throws RemoteException, CreateException; public Book findByPrimaryKey (String id) throws RemoteException, FinderException; public Collection findAll() throws RemoteException, FinderException; Public Collection findByAuthor(String author) throws RemoteException, FinderException; }

Interface de l’Entity Bean public interface Book extends EJBObject { public public public public }

String getAuthor() throws RemoteException; String getTitle() throws RemoteException; int getPrice() throws RemoteException; void setPrice(int mode) throws RemoteException;

Le descripteur de l’entity bean

<entity> Book <ejb-name>Book BookHome Book <ejb-class>BookEJB Container <prim-key-class>java.lang.String False title author price <primkey-field>title <description> <method-name>findByAuthor <method-params><method-param>java.lang.String <ejb-ql>select distinct object(b) from Book b where b.author=?1

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-class>hero.container.ValueContainerListener <message-selector>JMSType='ValueContainer' Container <ejb-ref> <description>Value Container Home <ejb-ref-name>ejb/valuecontainer <ejb-ref-type>Entity <ejb-link>ValueContainer hero.container.ValueContainerHome hero.container.ValueContainer <message-driven-destination> <destination-type>javax.jms.Topic <subscription-durability>NonDurable

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)

Related Documents

Introduction Aux Ejb
June 2020 8
Introduction Aux Ids
June 2020 4
Ejb
November 2019 25
Ejb
May 2020 13
Ejb
May 2020 11

More Documents from "Adarsh"

Introduction Aux Ejb
June 2020 8