•Sources S •Cours de F.Boyer •Cours C de d Pierre‐Yves Pi Y Gib ll Gibello Java EE ‐ Objectifs j Faciliter F ili lle développement dé l d nouvelles de ll applications à base de composants Intégration avec les systèmes d’information existants Support pour les applications « critiques » de ll’entreprise entreprise Disponibilité, tolérance aux pannes, montée en charge, charge sécurité ... Java EE – C’est quoi? q http://java.sun.com/javaee anciennement, J2EE (Java2 Enterprise Edition) Spécifications Programmation, assemblage, déploiement Serveur et services Modèle de programmation Implémentation p de référence Suite(s) de tests de conformance Certification Sun Accès A è au processus d de certification tifi ti payantt ((cher h !! Lourd (> 20.000 tests) Label abe Java EE Su Sun (qua (qualification cat o de plateformes) p ate o es) Offres commerciales Oracle WebLogic (haut de gamme) IBM Websphere W b h ( 1) (no Oracle ((Sun)) Glassfish NEC WebOTX SAP NetWeaver TmaxSoft Jeus, Kingdee Apusic, TongTech TTongWeb W b AS … Offre open‐source p JBoss (no 1 en nombre de déploiements) OW2 JOnAS JO AS Oracle ((Sun)) Glassfish ((« Platform edition ») Apache Geronimo (« Community edition » de IBM Websphere) openEjb … Java EE sous l ’oeil de Darwin... Standard en évolution/maturation depuis 1997/1998 (J2EE 1.0, 1 0, …,, 1.3, 1 3, 1.4, 1 4, Java EE depuis 2006) Au départ support d’applications Web n‐tiers ((architecture décentralisée)) Présentation : Servlet (principalement HTTP) Logique métier : EJB Gestion de données : JDBC Vers une infrastructure de support standard pour EAI Facteurs de rationalisation majeur (JTA/JTS, JMS, JCA, WS) Évolution É l i d de produits d i existants i vers Java J EE Java EE Vue ggénérale de l’architecture Architecture multi‐tiers Client Léger (Web (Web, browser) Lourd (Application java, Applet…) Architecture A hit t orientée i té service i (Application (A li ti répartie sans présentation) Serveur S d ’’applications li ti Conteneur EJB + logique métier Services non fonctionnels f l EIS ou Base de données Conteneur Web Servlets Code C d java j exécuté é té sur le l serveur Equivalent du CGI Génération de contenu Web dynamique JSP: Java Server Pages Mélange de HTML/XML et de code java Librairies b d ’extension ’ (« ( taglibs l b »)) Précompilation p en servlet RMI Remote Method Invocation Java seulement, seulement mais passerelles « RPC objet » (appels sur objets distants) Service S i de d nommage (RMI registry) i ) Sécurité paramétrable (SecurityManager) Garbage Collection distribuée Téléchargement g de code Fonctions avancées Activation d ’objets objets persistants, Réplication JNDI Service de nommage / annuaire Java J N i and Naming d Directory Di t Interface I t f API accès aux annuaires javax.naming « Service Provider » par annuaire cible (LDAP, NIS, RMI registry…) i t ) Utilisation avec les EJB Accès au bean (stub ( ou interface locale)) pour initialiser Accès à diverses ressources (UserTransaction, Queues JMS DataSources…) JMS, D t S ) JMS Java Messaging Service JMS P Provider id : iinclus l d dans JavaEE J EE Transport p synchrone y ou asynchrone, y Garantie de livraison « Messaging domains » point à point ou « publish/subscribe » Lien avec EJB : « message‐driven message driven bean » Pour échanges asynchrones API JavaEE de transactions : JTA Java Transaction API Package javax.transaction javax transaction TransactionManager : begin( ), commit( ), rollback( ) … Transaction : commit( ), rollback( ), enlistResource(XAResource), registerSynchronisation(Synchronization) ... Synchronization : beforeCompletion( b f C l ti ( ), ) afterCompletion(commit ft C l ti ( it | rollback) JMX Java Management eXtensions API unique q p pour applications pp de management g Mbeans avec accesseurs get/set Typage faible, attributs nommés Serveur JMX– Enregistrement des Mbeans Les applis d ’administration administration dialoguent avec le serveur JMX •nstrumenter un composant Fournir un ou des Mbeans Les enregistrer auprès du serveur JMX Sécurité : JAAS Authentification et autorisation Authentification : s'assurer que le client est bien celui qu'il prétend être. Autorisation (ou « habilitation ») : s'assurer qu'il détient les droits de faire ce qu'il demande. Clients l regroupés é par « roles l » ex. administrateur, développeur, etc... La gestion des associations nom/ mot de passe ou certificat / rôle est sous‐ t ité à un « Realm traitée R l » (peut ( t utiliser tili diffé différentes t ttechniques h i : fi fichier hi de d conf,f base de données, LDAP...) Intégré aux mécanismes de sécurité du conteneur Web Pour les clients lourds java, java APIs clientes JAAS pour implémenter l'intéraction avec l'utilisateur (ex. saisie du mot de passe...) Entityy Beans Composants métier représentant des données persistantes, en base relationnelle persistantes Gestion du mapping objet‐relationnel standard d d JPA Vu dans cours précédent Connexion à la l source de d d données du d container À spécifier dans « persistence.xml » Sources L’environnement Java EE, F. Boyer http://sardes.inrialpes.fr/~boyer/cours/ htt // d i i l f/ b / / Java EE, Pierre‐Yves Gibello