Institut Supérieur de Gestion Cours pour 3 ème LFIG Java Enterprise Edition Introduction Bayoudhi Chaouki 1
Java EE - Objectifs Faciliter le développement de nouvelles applications à base de composants Intégration avec les systèmes d information existants Support pour les applications «critiques» de l entreprise Disponibilité, tolérance aux pannes, montée en charge, securité... 2
Java EE : Historique Un modèle en évolution depuis 1997 J2EE 1.0 à 1.4 en 2003,... Au départ, juste des applications n-tiers Web Présentation (Servlets puis JSP), essentiellement HTTP Logique métier : EJB Données : JDBC Puis Une infrastructure de support standard pour les applications d entreprise. Facteurs de rationalisation majeurs via plusieurs API (JTA, JMS, JCA, Web Services). Les progiciels existants ont évolué vers Java EE. Un support pour développer des applications reparties et distribuées. 3
Java EE - Historique Anciennement appelé J2EE ( pour Java2 Enterprise Edition) Java EE comme Java Entreprise Edition C est un Modèle de programmation Sert à implémenter des applications web, des applications distribuées, des services web, Le modèle adopte l architecture multi-tiers 4
Architecture multi-tiers Une application Java EE adopte une architecture N-tiers. Tiers client qui peut être : Client Léger (Web, browser) Client Lourd (Application java, Applet ) Une Architecture Orientée Service (SOA : une application repartie) Tiers Serveur d applications Conteneur EJB + logique métier Services non fonctionnels SIE ou Base de données 5
Application multi-tiers Pages HTML Dynamiques Pages JSP Bean Entreprise Le Tier Client Le Tier Web Le Tier Metier La Machine du Client Le serveur java EE d application L application Web est décomposée en plusieurs parties. Chaque partie est dite Tiers Base de données Le Tier SIE Le serveur de Base de données SIE : Système Informatique de l Entreprise
Java EE : Architecture Browser Conteneur WEB Services html HTTP Servlets JSPs Applets RMI RMI BD EJBs RMI public static void main( ) { Conteneur EJB SIE Application Java Serveur d application Java EE 7
Java EE - Architecture RMI : EJB : JSP : JNDI : JMS : JTA : JCA : JMX : JDBC : SIE : Remote Methode Invocation Entreprise Java Beans Java Server Page Java Naming and Directory Interface Java Messaging Service Java Transaction API Java Connector Architecture Java Management extensions Java Data Base Connection Système Informatique de l Entreprise 8
Serveurs JEE : Payants Les noms de quelques serveurs commerciaux : BEA WebLogic (haut de gamme) IBM Websphere (Le n 1) Sun Java System App Server Borland Enterprise Server Oracle Application Server Macromedia jrun SAP Web application server Iona Orbix E2A 9
Serveurs JEE :Open-source Les noms de quelques serveurs open source : JBoss (n 1 en nombre de déploiements) ObjectWeb JOnAS(n 2, intégré à plusieurs distribution Linux Entreprise) Sun JS App Server (Platform Edition) Apache Tomcat ejbean GlassFish 10
Exemple d un serveur Java EE Client Java Source : Bull/ObjectWeb (JOnAS) Appel RMI JOnAS : un serveur «Java EE» Conteneur Web Conteneur EJB requête Servlets Interface locale Interface distante Enterprise Enterprise Enterprise Java Bean Java Bean Java Bean HTTP HTML Client Web Transaction Gestion Ear Nommage EJB Base de données... Appel JDBC Base de données Services 11
Conteneur Web Conteneur : un environnement d exécution Java EE qui fournit certains services aux composants qu il héberge : gestion du cycle de vie, injection de dépendances, Les composants hébergés sont : Servlets : Code java (une classe java) exécuté sur le serveur et permettant la génération de contenu Web dynamique. JSP: Java Server Pages Mélange de HTML/XHML et de code java avec la possibilité d utilisation des librairies d extension («taglibs») comme JSTL. Une page JSP est précompilé en servlet. 12
RMI RMI pour Remote Method Invocation Il permet Les appels sur objets distants Il présente un service de nommage (RMI registry). La sécurité est paramétrable via l API SecurityManager. Un ramasse-miettes (garbage Collector) Distribuée pour le nettoyage des objets distants. 13
JNDI Java Naming and Directory Interface : Service de nommage ou annuaire L API responsable de l accès aux annuaires : javax.naming Utilisable avec les EJBs (Entreprise Java Beans) : Accès à l interface «home» pour l initialisation Accès à diverses ressources (UserTransaction, la file d attente JMS, DataSources ) 14
JMS Java Messaging Service JMS Provider : inclus dans J2EE Transport synchrone ou asynchrone, Garantie de livraison «Messaging domains» point à point ou «publish/subscribe» Lien avec EJB : «message-driven bean» Pour échanges asynchrones 15
JTA Java Transaction API : une API java pour gérer les transactions de bases de données. Package javax.transaction TransactionManager : begin(), commit(), rollback() Synchronization : beforecompletion(), aftercompletion(commit rollback) 16
JMX Java Management extensions API unique pour applications de management Managed beans (Mbeans) avec accesseurs get/set Typage faible, attributs nommés Serveur JMX Enregistrement des Mbeans Les applications d administration dialoguent avec le serveur JMX Instrumenter un composant revient à Fournir un ou des Mbeans puis d enregistrer ces Mbeans auprès du serveur JMX. 17
EJB: Architecture JavaBeans pour l Enterprise Les EJBs reprerentent la logique métier S appuie sur Java SE et les APIs de Java EE : JNDI, JTA/JTS, JDBC, JMS, JAAS Gestion déclarative (personnalisation par annotations) Portable sur les différents conteneurs EJB 18
Rôles définis par la spec. EJB Fournisseur de beans Développeur qui crée les EJB Assembleur d application Crée l application par assemblage d EJB Administrateur Déploiement, sécurité, exploitation, montée en charge Analogue au rôle de DBA pour les BD 19
Exemple @Entity public class Livre { //l equivalant de create table } @Id //clé primère private String code; @Column(length=10) //taille maximale de la colonne private double prix; @Column(nullable = false) //colonne ne pouvant pas être nulle private String titre; @Column(nullable = false) private String auteur; public Livre() { } // Constructeur par défaut (obligatoire pour Entity bean) public Livre(String code, String titre, String auteur, double prix) { this.code =code; this.titre=titre; this.auteur=auteur; this.prix=prix; } public void setprix(double prix) { this.prix = prix; } public double getprix( ) { return prix; }... 20
JCA JCA pour Java Connector Architecture C est un service permettant l intégration avec les SI d entreprise (EIS) Applications (ERP, Supply Chain ) Middleware (gestionnaire de transactions ) Connecteur composé de : Contrats système API cliente Resource Adapter 21
Déploiement Packaging en fichier.rar (archive) Déployé par le serveur d application Format jar avec organisation standard Contient tous les éléments du connecteur Descripteur de déploiement (.xml) dans le dossier META-INF : configuration du connecteur 22
Packaging Application JavaEE (agrégation de différents tiers) Fichier «.ear» + descripteur «application.xml» Tiers client Web : fichier «.rar» + descripteur «web.xml» Application : fichier «.jar» + descripteur «applicationclient.xml» (lancement du main() de la classe spécifiée dans le «manifest», attribut «Main-Class») Tiers EJB Fichier «.jar» + descripteur «ejb-jar.xml» Tiers «EIS» (connecteurs JCA) Fichier «.rar» + descripteur «rar.xml» 23