Chapitre 4: Entreprise Java Bean EJB3 PDF
Document Details
Uploaded by Deleted User
Tags
Summary
This document provides an introduction to Enterprise Java Beans (EJB). It details the different types of EJB, their functionalities, and how they are used in software development. The document explores various EJB concepts, including stateless and stateful sessions, and how they are implemented in different scenarios.
Full Transcript
Chapitre 4: Entreprise Java Bean (EJB) Chapitre 4: Entreprise Java Bean EJB Introduction Projet Informatique Exigences Exigences fonctionnelles techniques Une appl...
Chapitre 4: Entreprise Java Bean (EJB) Chapitre 4: Entreprise Java Bean EJB Introduction Projet Informatique Exigences Exigences fonctionnelles techniques Une application informatique est Les performances: Temps de réponse, la développée pour répondre aux besoins disponibilité, la tolérance aux pannes et fonctionnelles de l’entreprise. la montée en charge La maintenance: Une application doit Les besoins fonctionnelles des évoluer dans le temps, elle doit être entreprises différents suivant le métier fermée à la modification et ouverte à de l’entreprise. l’extension. Sécurité, portabilité, et la distribution. L’application doit être capable de fournir des services aux différents clients. Moindre coût. Chapitre 4: Entreprise Java Bean EJB3 Introduction Serveur d’application J2EE SGBD Client Java RMI Web Container EJB Container (Couche Web) (Couche Métier) Client Web HTTP Servlet JSP EJB Data Base SOAP Client Web Web Service Service HTTP Présentation Application Logique Couche Web Métier Données Chapitre 4: Entreprise Java Bean EJB3 Introduction Couche Présentation Elle présente l’interface homme machine de l’application. La couche présentation est dépend du client de l’application: ❑ Client Lourd java Desktop: Interfaces graphiques java SWING ou AWT. Ce genre de client peut communiquer directement avec les composants métiers déployés dans le conteneur EJB en utilisant le middleware RMI (Remote Method Invocation). ❑ Client Leger Web: HTML, Java Script, CSS. Un client web communique avec les composants web Servlet déployés dans le conteneur web du serveur d’application en utilisant le protocole HTTP. ❑ Un client.Net, PHP, C++, …: Ce genre de clients développés avec un autre langage de programmation autre que java, communiquent généralement avec les composants Web Services déployés dans le conteneur Web du serveur d’application en utilisant le protocole SOAP (HTTP+XML). ❑ Client Mobile: Androide, iPhone, Tablette …. Généralement ce genre de clients communique avec les composants Web Services en utilisant le protocole HTTP ou SOAP Chapitre 4: Entreprise Java Bean EJB3 Introduction Couche Application Elle regroupe la couche web et la couche service. Elle est un médiateur entre la couche présentation et la couche métier. Elle respecte le modèle MVC. Elle fonctionne selon le processus suivant: ❑ Elle reçoit les requêtes http clientes ❑ Assure le suivi des sessions ❑ Vérifier les autorisations d’accès de chaque session ❑ Assure la validation des données envoyées par le client ❑ Fait appel au composants métier pour assurer les traitements nécessaires ❑ Génère une vue qui sera envoyée à la couche présentation. Chapitre 4: Entreprise Java Bean EJB3 Introduction Logique Métier Elle présente le cœurs de l’application. Elle se charge de récupérer les données nécessaire pour assurer les traitements métiers déclenchés par la couche application. Elle assure la gestion du Workflow (Processus de traitement métier en plusieurs étapes). Il est important de séparer la partie accès aux données (Couche DAO) de la partie traitement de la logique métier (Couche Métier) pour les raisons suivantes: ❑ Séparer le code métier qui reste complexe, du code d’accès aux données qu’est élémentaire. ❑ Ajouter un niveau d’abstraction sur l’accès aux données pour être plus modulable et par conséquent indépendant de la nature des unités de stockage de données. ❑ La couche métier est stable par rapport à la couche DAO. ❑ Répartir les tâches entre les développeurs. ❑ Rendre l’utilisation des Framework ORM tels que Hibernate, Toplink, … possible. Chapitre 4: Entreprise Java Bean EJB3 Introduction Les EJB (Entreprise Java Bean) sont des composants serveurs qui respectent les spécifications d’un modèle édité par Sun. Ces spécifications définissent une architecture, un environnement d’exécution et un ensemble d’API. Le but principal des EJB est de faciliter la création des applications distribuées pour des entreprises. Physiquement, un EJB est un ensemble : des interfaces, des classes et descripteurs de déploiement (fichier XML). Un des principales caractéristiques des EJB et de pouvoir être concentré sur les traitements orientés métier, car un EJB ainsi que l’environnement dans lequel s’exécutent prennent en charge un certain nombre de traitements tels que la gestion des transactions, la persistance des données, … Chapitre 4: Entreprise Java Bean EJB3 Introduction Les EJB exigent un serveur d’application comme environnement d’exécution. Un serveur d’application fourni un ensemble de fonctionalités utilisées par un ou plusieurs conteneurs EJB. Alors un conteneur EJB et le seul environnement d’exécution des EJB. Le conteneur d’EJB propose un certain nombre de services qui assurent la gestion: ❑ du cycle de vie du bean. ❑ de l’accès au bean. ❑ de la sécurité d’accès au bean. ❑ des transactions. Chapitre 4: Entreprise Java Bean EJB3 Introduction Serveur d’application Client Conteneur EJB EJB EJB Conteneur Data Sources Data SGBD source Chapitre 4: Entreprise Java Bean EJB3 Introduction Un client ou une entité externe du serveur ne communique pas directement avec celui-ci mais via son conteneur. Le dialogue entre client et EJB via un conteneur est assuré par tout objet qui hérite de la classe EJBObject. L’ avantage de communiquer via un conteneur est de pouvoir bénéficier des services offerts par ce dernier et libérer le développeur de cette charge de travail. Plusieurs serveurs EJB (EJB container) commerciaux sont disponibles tels que : BEA Weblogic, IBM Websphere, Sun IPlanet, Macromedia JRun, …. Aussi, il existe des serveurs EJB open source dont les plus connus Jboss et Jonas. Chapitre 4: Entreprise Java Bean EJB3 Introduction Les trois types d’EJB sont: ❑ Entity Beans : assurent la persistance des données. ❑ Sessions Beans: permettant la gestion des transactions, l’accès aux données,… ❑ Message Driven Bean (MDB): reçoit des messages et les traite de manière asynchrone. Remarque: Les trois types des EJB possèdent des points communs notamment celui de devoir être déployés dans un conteneur EJB. Chapitre 4: Entreprise Java Bean EJB3 Introduction Serveur d’application J2EE EJB Container JNDI Java Client MDB EJB Data Sources Entity Container EJB Data Session Source Client DBMS PHP Web Container.NET APIs Web Android Service Data JDBC Base HTTP Client JMAIL Servlet JPA Java … bean JSP Chapitre 4: Entreprise Java Bean EJB3 EJB Entity: Persistance des données Représentent des objets persistant dont l’état est stocké dans une unité de persistance (base de donnée). Représentent les structures de données manipulées par l’ application. Représentent des composants sérialisables qui peuvent être utilisés pour échanger des données entre applications distribuées. Ils sont gérées via JPA2 (EntityManager) et sessions beans Les entités permettant d'encapsuler les données d'une occurrence d'une ou plusieurs tables. Entity Bean = POJO (Plain Old Java Object). Chapitre 4: Entreprise Java Bean EJB3 EJB Entity: Persistance des données Un objet Java de type POJO est mappé vers une table de la base de données grâce à des méta data via JPA. Règle 1: Un Bean Entity est un java bean alors c’est une classe qui: ❑ Implémente l’interface java.io.Serializable. ❑ Possède un constructeur sans arguments. ❑ Possède les Getters et les Setters. Règle 2: EJB Entity doit être déclaré avec l'annotation @javax.persistence.Entity Chapitre 4: Entreprise Java Bean EJB3 EJB Entity: Persistance des données Règle 3: EJB Entity doit avoir au moins une propriété déclarée comme clé primaire avec l'annotation @Id Règle 4: EJB Entity est composé de propriétés qui seront mappées sur les champs de la table de la base de données. Chaque propriété encapsule les données d'un champ d'une table. Ces propriétés sont utilisables au travers des accesseurs (getter/setter). Une propriété particulière, qu’ est la clé primaire permet l’identification d’un enregistrement coté relationnel et un POJO coté objet. Elle peut être de type primitif ou de type objet. La déclaration de cette clé primaire est obligatoire. Chapitre 4: Entreprise Java Bean EJB3 EJB Entity: Persistance des données Le mapping Objet-Relationnel entre le Bean Entity et la table se fait via l’API (JPA). Java Persistance API possède des annotations permettant le mapping Objet- Relationnel. Les principales annotations sont: ❑ @Entity: indique que les objets de la classe sera mapper vers une table de la base de données. ❑ @Table : Préciser le nom de la table concernée par le mapping. Par défaut c’est le nom de la classe qui sera considérée. ❑ @Column : Associer un champ de la colonne à une propriété de la classe. Par défaut c’est le nom de la propriété qui sera considérée. ❑ @Id: Associer un champ de la table à la propriété en tant que clé primaire. ❑ @GeneratedValue: Permet la génération automatique de la clé primaire au besoin. Chapitre 4: Entreprise Java Bean EJB3 EJB Entity: Persistance des données ❑ @Basic : Le mode de mapping la plus simple. Cette annotation est utilisée par défaut ❑ @Transient : Demander de ne pas tenir compte du champ lors du mapping. JPA permet la gestion des différentes associations entre les entités: (Seront traitées via un exemple) ❑ @OneToMany ❑ @ManyToOne ❑ @ManyToMany ❑ @OneToOne Chapitre 4: Entreprise Java Bean EJB3 EJB Entity: Exemple de problème On souhaite créer une application qui permet de gérer des comptes bancaire. ❑ Chaque compte est défini un numéro, un solde et une date de création ❑ Un compte courant est un compte qui possède en plus un découvert et un compte épargne est un compte qui possède en plus un taux d’intérêt. Chaque compte appartient à un client et créé par un employé. ❑ Chaque client est défini par son code et son nom. ❑ Un employé est défini par son Matricule et son nom. ❑ Chaque employé possède un supérieur hiérarchique. Il peut appartenir à plusieurs groupes ❑ Chaque groupe, défini par un code et un nom, il peut contenir plusieurs employés. ❑ Chaque compte peut subir plusieurs opérations. ❑ Il existe deux types d’opérations : Versement et Retrait. Chaque opération est effectuée par un employé. Une opération est définie par un numéro, une date et un montant. Chapitre 4: Entreprise Java Bean EJB3 EJB Entity: Exemple de problème Digramme de classes: Chapitre 4: Entreprise Java Bean EJB3 EJB Entity: Exemple de problème MLDR: ❑ T_CLIENTS (CODE_CLI, NOM_CLI) ❑ T_EMPLOYES (NUM_EMP, NOM_EMP, #NUM_EMP_SUP) ❑ T_GROUPES (NUM_GR, NOM_GR ) ❑ T_EMP_GR (#NUM_EMP, #NUM_GR ) ❑ T_COMPTES (NUM_CPTE,TYPE_PTE, DATE_CR, SOLDE, #NUM_EMP, #CODE_CLI) ❑ T_OPERATIONS (NUM_OP,TYPE_OP, DATE_OP, MONTANT, #NUM_EMP, #NUM_CPTE) Chapitre 4: Entreprise Java Bean EJB3 EJB Entity: Exemple de problème Les étapes à suivre: ❑ Créer les entités avec les annotations adéquates. ❑ Créer la base de données (seulement la base de données et non pas les tables). ❑ Créer le DataSource sur le fichier Standalone.xml ❑ Configurer l’unité de persistance sur le fichier persistence.xml ❑ Définir deux interfaces IBanqueLocal et IBanqueRemote ❑ Implémenter les méthodes des deux interfaces ❑ Déployé le projet. ❑ Développer le client Java du projet EJB et tester l’ensemble des méthodes. Chapitre 4: Entreprise Java Bean EJB3 EJB Entity: Exemple de problème Entity Client: // Getters et Setters // Constructeurs avec et sans paramètres } Chapitre 4: Entreprise Java Bean EJB3 EJB Entity: Exemple de problème Entity Employe: // Getters et Setters // Constructeurs avec et sans paramètres } Chapitre 4: Entreprise Java Bean EJB3 EJB Entity: Exemple de problème Entity Groupe: // Getters et Setters // Constructeurs avec et sans paramètres } Chapitre 4: Entreprise Java Bean EJB3 EJB Entity: Exemple de problème Entity Compte: // Getters et Setters // Constructeurs avec et sans paramètres } Chapitre 4: Entreprise Java Bean EJB3 EJB Entity: Exemple de problème Entity Operation: // Getters et Setters // Constructeurs avec et sans paramètres } Chapitre 4: Entreprise Java Bean EJB3 EJB Entity: Exemple de problème Entity Versement: Chapitre 4: Entreprise Java Bean EJB3 EJB Entity: Exemple de problème Entity Retrait: Chapitre 4: Entreprise Java Bean EJB3 EJB Entity: Exemple de problème Création d’un DataSource pour JBoss7: Pour le serveur Jboss 7 un DataSource est défini sur le fichier Standalone.xml Sur le dossier Jboss 7 + Standalone + Configuration + Standalone.xml Chapitre 4: Entreprise Java Bean EJB3 EJB Entity: Exemple de problème Création d’un fichier de persistance persistance.xml: Chapitre 4: Entreprise Java Bean EJB3 EJB Session Il existe trois types des EJB Session: ❑ Stateless : sans état Une instance est crée par le serveur pour plusieurs connexions clientes. Ce type de bean ne conserve aucune donnée dans son état. ❑ Statefull : avec état Création d’une instance pour chaque connexion cliente. Ce type de bean peut conserver des données entre les échanges avec le client. ❑ Singleton: Instance Unique Création d’une instance unique quelque soit le nombre de connexion. Chapitre 4: Entreprise Java Bean EJB3 EJB Session: Stateless Client EJB Container EJB (Couche Métier) Client EJB Stateless Client EJB Client Stateless EJB Client EJB Chapitre 4: Entreprise Java Bean EJB3 EJB Session: Statefull EJB Container (Couche Métier) Client Statefull EJB Client Statefull EJB Chapitre 4: Entreprise Java Bean EJB3 EJB Session: Singleton EJB Container (Couche Métier) Client EJB Client Singleton EJB Client EJB Chapitre 4: Entreprise Java Bean EJB3 EJB Session: Un EJB Session est un composant qui possède ❑ Une interface Remote : qui permet de déclarer les méthodes qui sont accessibles à distance. C’est-à-dire accessible aux composants qui sont déployés dans des machines autre que le serveur. ❑ Une interface Local : qui permet de déclarer les méthodes qui sont accessible en local. C’est-à-dire les méthodes accessible par les composants déployés dans le même serveur d’application. ❑ La classe du bean qui implémente les deux interfaces Remote et Local. l’implémentation des méthodes de cette classe représentent les traitements métier et accès aux données de l’application. Chapitre 4: Entreprise Java Bean EJB3 EJB Session: Un EJB Session est un composant qui possède ❑ Une interface Remote : qui permet de déclarer les méthodes qui sont accessibles à distance. C’est-à-dire accessible aux composants qui sont déployés dans des machines autre que le serveur. ❑ Une interface Local : qui permet de déclarer les méthodes qui sont accessible en local. C’est-à-dire les méthodes accessible par les composants déployés dans le même serveur d’application. ❑ La classe du bean qui implémente les deux interfaces Remote et Local. l’implémentation des méthodes de cette classe représentent les traitements métier et accès aux données de l’application. Chapitre 4: Entreprise Java Bean EJB3 EJB Session: Une interface Remote est une interface java annoter par l’annotation @Remote. Une interface Local est une interface java annoter par l’annotation @Local. Un EJB session est une classe qui implémente les deux interfaces, elle est annoter par l’une des annotations suivantes: ❑ @Statless : Un pool d’instances de cet EJB sera créé par le serveur ❑ @Statfull : Pour chaque connexion, le serveur crée une instance ❑ @Singleton : Un instance unique sera créée quelque soit le nombre de connexions. Après instanciation d’un EJB Session, ses références Remote (IP, Port, Adresse Mémoire) et Locale (Adresse Mémoire) seront publiée dans l’annuaire JNDI. Chapitre 4: Entreprise Java Bean EJB3 EJB Session: L’attribut name de ces trois annotations, permet de spécifier le nom JNDI qui sera associé aux références de l’EJB dans l’annuaire JNDI. Par défaut, c’est le nom de la classe qui sera utilisé. Ce nom sera combiné à d’autres informations pour garantir l’unicité de ce nom sur l’annuaire JNDI. Avec Jboss 7, le nom complet JNDI d’un EJB Session est de la forme suivante : ❑ Pour un Statless et Singleton: Nom_Projet_EAR/Nom_Projet_EJB/Name!Package.NomInterface ❑ Pour un Statfull Nom_Projet_EAR/Nom_Projet_EJB/Name!Package.NomInterface?statful Chapitre 4: Entreprise Java Bean EJB3 EJB Session: Exemple de problème Interface Local: Chapitre 4: Entreprise Java Bean EJB3 EJB Session: Exemple de problème Interface Remote: Chapitre 4: Entreprise Java Bean EJB3 EJB Session: Exemple de problème La classe bean (EJB Session) Chapitre 4: Entreprise Java Bean EJB3 EJB Session: Exemple de problème La classe bean (EJB Session) Chapitre 4: Entreprise Java Bean EJB3 EJB Session: Exemple de problème La classe bean (EJB Session) Chapitre 4: Entreprise Java Bean EJB3 EJB Session: Exemple de problème La classe bean (EJB Session) Chapitre 4: Entreprise Java Bean EJB3 EJB Session: Exemple de problème Déploiement du Projet ❑ Sur le console: ❑ Vérifier sur le dossier : Standalone + deployments le fichier.jar de votre projet Chapitre 4: Entreprise Java Bean EJB3 EJB Session: Exemple de problème Déploiement du Projet: ❑ Vérifier la création des tables de votre base de données ainsi leurs structures: Chapitre 4: Entreprise Java Bean EJB3 EJB Session: Exemple de problème Création d’un client Java : ❑ Créer un projet Java standard Chapitre 4: Entreprise Java Bean EJB3 EJB Session: Exemple de problème Création d’un client Java : ❑ Créer un projet Java standard Chapitre 4: Entreprise Java Bean EJB3 EJB Session: Exemple de problème Création d’un client Java : ❑ Executer le client java et vérifier l’ajout des deux client dans la table CLIENT ❑ Vérifier les autres méthodes de la classe Bean une par une.