Plan 1. Application Servers 2. Servlets, JSP, JDBC 3. J2EE: Vue d ensemble 4. Distributed Programming 5. Enterprise JavaBeans 6. Enterprise JavaBeans: Special Topics 7. Prise de recul critique
Enterprise JavaBeans 1. Definitions 2. Global View 3. Entity Beans 4. Session Beans 5. Message Beans 6. Implementation
5.1 Definitions Composants: Motivation Programmation usuelle "programming in the small" Le programmeur prend tout en charge (construction des différents modules, interconnexions, ) Grandes compétences techniques Structure de l'application peu visible (tout est dans le code) Programmation constructive (ou par composants) "programming in the large" Le programmeur réutilise des modules logiciels existants Focalise l'expertise sur les problèmes du domaine Description de la structure à l'aide d'un langage déclaratif
5.1 Definitions Composants: Définition Définition usuelle module logiciel autonome pouvant être installé sur différentes platesformes qui exporte différents attributs, propriétés ou méthodes qui peut être configuré capable de s auto-décrire (introspection) Intérêt : être des briques de base configurables pour permettre la construction d une application par composition
5.1 Definitions Rôle des conteneurs Encapsulation d un composant (techniquement par délégation) prise en charge (masque) des services systèmes (nommage, sécurité, transaction, persistance,...) prise en charge partielle des "connecteurs" (composants ayant des relations avec d'autres composants)
5.1 Definitions Les modèles de composants: de l'installation à l'introspection Installer les composants Packaging et déploiement dans un conteneur Créer une instance par des fabriques ("home") configuration des valeurs initiales Retrouver les composants services de nommage ou maisons ("home") Utiliser invocation synchrone et événements Introspection découvrir leurs APIs (fonctionnelle) découvrir les connecteurs (structurelle)
5.1 Definitions Enterprise JavaBeans Définition de Sun Microsystems: L'architecture des Enterprise JavaBeans (EJB) est une architecture de composants pour le développement et le déploiement d'applications d'entreprise distribuées basées sur des composants. Les applications écrites en utilisant l'architecture des EJB sont évolutives, transactionnelles et sûres. Ces applications peuvent être écrites une fois, puis déployées sur toute plate-forme serveur qui supporte la spécification des EJB. Autre définition plus courte: Les EJB sont un modèle de composants côté serveur, basés sur les technologies à objets distribués, standard pour les CTM.
5.1 Definitions Enterprise Java Beans: Components and Containers An Enterprise Java Bean (EJB) is a component that provides reusable business logic functionality and/or a representation of a persistent business entity An EJB Container executes an EJB due to a client request. Provides the plumbing necessary to execute the EJB including non-business logic related functionality such as transactions, security, concurrency, remote access, etc. life cycle functions, e.g., creating, destroying, etc. Client uses an interface to access the Bean indirectly A deployment descriptor describes the structure of the Bean and how to execute the Bean as part of an application
5.1 Definitions J2EE and EJB How does J2EE relate to Enterprise JavaBeans technology? Enterprise JavaBeans (EJB) technology is the basis of J2EE. EJB technology provides the scalable architecture for executing business logic in a distributed computing environment. J2EE makes the life of an enterprise developer easier by combining the EJB component architecture with other enterprise technologies to solutions on the Java platform for seamless development and deployment of server side applications.
EJB Contrats Fournir un modèle de développement uniforme pour les applications qui utilisent les composants EB Contrat coté client fournir une vue uniforme du bean au client. En particulier cette vue est indépendante de la plate-forme de déploiement Contrat coté conteneur permettre la portabilité des beans sur différentsserveursejb Contrat coté packaging (ejbjar/ear file) fournir un format de fichier standard pour packager les beans. Ce format doit être supporter par tous les outils liés aux EJB
EJB: Le contrat côté client Localiser le bean utilisation de JNDI Utiliser le bean utilisation de l interface standard fournie par l EB Home Interface méthodes liées à la gestion du bean : create, remove, finder,... Remote Interface (méthodes de l application) Le container implémente le mécanisme de délégation permettant de faire suivre l appel au bean Le client ne communique pas directement avec le bean mais avec le container
EJB: Le contrat "conteneur" L EJB conteneur permet gestion du cycle de vie, gestion de l état, sécurité, transaction distribuée, concurrence, extensibilité ces services appellent des méthodes fournies par le bean (callback methods) Les conteneurs gèrent 3 types de beans Entity beans Session beans Message driven beans
Cycle de vie d'un bean Le conteneur gère le cycle de vie d un bean Il fournit administration du bean ("Home implementation") permet aux clients de créer, détruire et rechercher un objet EJB appelle les opérations correspondantes fournies par le bean (callbacks) gestion de l état Activation: le bean est chargé en mémoire Passivation (Désactivation ): le conteneur peut sauvegarder l état du bean
Architecture Client Method invocation Client Interface Container Method Delegation TX support Security Persistence... Bean Instance
Structure d'un EJB
Création d'un EJB Objet
Interaction avec un EJB
EJB Object / Proxy d'ejb Client never directly access Bean instance Client finds home interface via JNDI Client uses home interface to obtain a reference to the Bean s component interface.
Gestion des ressources "Pool" d'instances Le serveur EJB maintient un pool d'instance de bean
Types of Beans Entity Beans Persistent data focus Session Beans: Client and application logic focus Message Driven Beans Asynchronous message processing
Classes and Interfaces 1. Remote Interface 2. Remote Home Interface 3. Local Interface 4. Local Home Interface 5. Bean Class 6. Primary Key See: http://java.sun.com/j2ee/sdk_1.3/techdocs/api/
Remote Interface Define the bean's business methods that can be accessed from applications outside the EJB container. «interface» java.rmi.remote «interface» javax.ejb.ejbobject «interface» RemoteInterface
Remote Home Interface Defines the bean's life-cycle methods that can be accessed from applications outside the EJB container: Creating beans Removing beans Finding beans «interface» java.rmi.remote «interface» javax.ejb.ejbhome «interface» RemoteHomeInterface
Local Interface Defines the bean's business methods that can be used by other bean co-located in the same EJB container (same address space) Allow beans to interact without the overhead of a distributed object protocol, which improves performance. «interface» javax.ejb.ejblocalobject «interface» LocalInterface
Local Home Interface Defines the bean's life-cycle methods that can be used by other co-located in the same EJB container (same address space) Allow beans to interact without the overhead of a distributed object protocol, which improves performance. «interface» javax.ejb.ejblocalhome «interface» LocalHomeInterface
Bean Class The session and entity bean classes actually implement the bean's business and life-cycle methods. Usually does not implement any of the bean's component interfaces directly. However, it must have matching signatures of the methods defined in the remote and local interfaces and must have methods corresponding to some of the methods in both theremoteandlocal interfaces. «interface» javax.ejb.entitybean MyEntityBean «interface» java.io.serializable «interface» javax.ejb.enterprisebean «interface» javax.ejb.sessionbean MySessionBean
Primary Key The primary key is a very simple class that provides a pointer into the database. Only entity beans need a primary key. java.io.serializable MyPrimaryKey
Local vs. Remote Interfaces Entity and Session Beans can support local and remote interfaces Client is written to a specific interface Interface(s) supported is not transparent to Bean provider Local interface Not location independent Client and EJB run in the same JVM Example: A Bean always accessed by other Beans Parameter passing is by reference (same as standard Java) Well adapted for fine grained access Remote interface Location independent Parameters passed by value (RMI semantics) Well adapted for coarse grain access
Local vs. Remote Interfaces (2) Reasons for Choosing Local vs. Remote Access Type of client If client is always a Web Component or another EJB, choose local Coupling If tightly coupled, choose local Scalability requirements If strong scalability requirements, choose remote