ejb & serveurs dapplications. julien maillard chef déquipe chez capgemini sur les projets...
TRANSCRIPT
EJB & Serveurs d’applications
Julien Maillard
Chef d’équipe chez Capgemini sur les projets Oxylane
Participation sur les projets fret SNCF et Agence en ligne d’EDF
• EJB Présentation EJB Session EJB Message Création d’un projet EJB
Implémentation d’un EJB Session Implémentation d’un EJB Message
Sommaire
• Serveur d’application Présentation Administration serveur Instance Managée Domaine Weblogic Clustering & Load Balancing Machine Structure d’un domaine Weblogic Configuration d’un serveur Weblogic
Sommaire
1ère PartieLES EJB
Présentation
Les Ejbs permettent de créer des composants déployés sur des serveurs applicatifs ( distants ou non)
Il sont hébergés par des serveurs d’applications
2 principaux types d’EJB : EJB Message : permet d'accomplir des tâches de manière
asynchrone EJB Session : permet de proposer des services avec ou
sans conservation d'état entre les appels
EJB
Présentation
Première spécification des EJB en 1992 Version Actuelle : EJB 3.1 (depuis 2009) Depuis la version 3.0 :
Basés sur la JDK 1.5 Ajout des annotations
Le développement d’EJB s’en trouvent grandement simplifiés
EJB
Quand utiliser les EJB ? Lorsque l'application doit être évolutive.
Les transactions doivent assurer l'intégrité des données. (accés concurrent …)
L'application aura une variété de clients.
Ils permettent d’externaliser la logique métier des application pour ne se soucier que de la couche présentation
EJB
Fonctionnement le serveur d’application aiguille l’ensemble
des requêtes et gère l’ensemble des conteneurs et services
le serveur d’application gère un service d’annuaire JNDI et un service de transaction
Il fournit l’ensemble des services nécessaires au fonctionnement des EJB
EJB
Fonctionnement
Le client localise l’EJB qu’il souhaite récupérer via l’API JNDI et le nom JNDI de cet EJB. Les composants déployés sont enregistrés dans l’annuaire du serveur.
Les appels de méthodes distantes se font par RMI (Remote Method Invocation) alors que les appels de méthodes locales se font directement dans la JVM du serveur
EJB
Exemple d’une architecture basique d’EJB
EJB
EJB
Pour résumer De façon imagée, on peut considérer le serveur
d’application comme un orchestre. Le rôle de ce serveur est celui du chef d’orchestre. C’est lui qui dirige l’ensemble des services et leur cycle de vie (démarrage, arrêt, pause…). Chaque partie de l’orchestre correspond à un service (EJB, Transaction, Base de données…). Ils sont tous indépendants, mais ils travaillent ensemble pour produire un résultat commun.
EJB Session
• Un Session Bean est une application côté serveur permettant de fournir un ou plusieurs services à différentes applications clientes. Les Session Beans constituent donc les briques de la logique métier d’une application.
• Les Session Beans font office de « pont » entre les clients et les données
• Les Session Bean sont divisés en deux types : « Stateless » et « Stateful ».
EJB
EJB Session
Le client récupère une référence (implémentant l’interface métier) de l’EJB qu’il souhaite utiliser. Celui-ci peut alors appeler les méthodes de l’objet récupéré sans se soucier des contraintes de communication. En effet, l’appel d’une méthode est automatiquement transmis à l’instance de l’EJB dans le conteneur (généralement par un système de proxy). Cette instance traite la méthode et retourne le résultat au client. La création du proxy est à la charge du conteneur et reste totalement transparente pour le client.
EJB
EJB Message Utilisé lorsqu’une information doit être échangée
entre deux applications (mode Queue) plusieurs applications (mode Topic)
Traitement asynchrone 3 acteurs :
Client Serveur Intermédiaire stockant les messages
EJB
EJB Message (mode Queue)
EJB
EJB Message (mode Topic)
EJB
EJB Message multithreading grâce au serveur
d’application
Gestion de la file JMS transparente
Gestion du cycle de vie (il démarre et disparaît en même temps que le conteneur)
EJB
Création d’un Projet EJB
EJB
Création d’un EJB Session 3 étapes :
Création de l’interface Implémentation de l’interface Ajout des annotations
EJB
Définition de l’interface d’un EJB Session
Création d’un EJB Session
Implémentation de l’interface d’un EJB Session
Création d’un EJB Session
Implémentation de l’interface d’un EJB Session
Création d’un EJB Session
Exemple d’appel d’EJB Session
Création d’un EJB Session
Ajout des annotations @Remote l’ejb sera accessible depuis
l’extérieur via le protocole RMI @Local L’ejb sera accessible depuis la JVM sur
laquelle il sera deployé @StateLess Ejb « Sans état » , 1 instance
utilisée pour l’ensemble des clients @StateFull Ejb « avec état » , 1 instance pour
chaque client, l’instance sera donc spécifique à son client
Création d’un EJB Session
Ajout des annotations
Stateful
Stateless
Création d’un EJB Session
Création d’un EJB Session
Ajout des annotations
Remote
Local
Implémentation de l’interface Message Listener
Création d’un EJB Message
Ajout des annotations
Création d’un EJB Message
Appel d’un EJB message
Création d’un EJB Message
Questions ?
EJB
2ème PartieServeurs
d’application
Qu’est ce qu’un serveur d’application ?
Un serveur d'application a pour objectif de facilité la création d'application serveur sans se
soucier de l'aspect réseau (toute la couche réseau est laissée au serveur d'application).
Plus d’une trentaine de serveur d’application Oracle 9i Application Server de Oracle WebLogic Server de BEA Systems WebSphere Application Server de IBM JBoss Glassfish JoNas Apache Geronimo
Serveurs d’application
Historique :
Créé en 1995 Racheté par Oracle en 2008 Actuellement en version 11g Support des EJB 3 et de Java 1.5 depuis la
version 10
Serveur Weblogic
Qu’est ce qu’un domaine Weblogic ? Un ensemble d’instances Weblogic gérées par
une seule console d’administration et un seul fichier de config.
Un domaine est composé de serveurs ou de clusters de serveurs
Serveurs d’application
Serveur Weblogic
C’est une instance configurée permettant d’héberger des applications (EAR,JAR,WAR…) et des ressources (JMS, JDBC….)
2 types de serveurs : Serveurs Managés Serveurs d’administrations
Serveurs d’application
Administration serveur
Permet de centraliser la gestion de la configuration pour le domaine
Il héberge la console d’administration Permet de démarrer ou d’arreter les serveurs Permet la gestion des serveurs et des services pour le
domaine Permet de déployer les application pour le domaine il n’y a un unique Administration serveur par domaine
Serveurs d’application
Serveur managéC’est une instance weblogic qui héberge les applications et les ressources nécessaires pour ces dernières
Chaque serveur managé est indépendant (sauf dans le cas d’un cluster)Un serveur managé est généralement utilisé pour isoler des applications
Serveurs d’application
Serveur managé Le serveur d’administration gère le fichier de configuration
du domaine Chaque serveur managé conserve une copie local du fichier
de configuration du serveur d’application Quand un serveur managé démarre, il se connecte au
serveur d’administration afin de synchroniser le fichier de conf.
Lors de changements du fichier de conf, le serveur d’administration envoie les changements au serveur managés
Serveurs d’application
Exemple de Domaine Weblogic
Serveurs d’application
Applications
EJBJDBC
Applications
EJBJDBC
Applications
EJBJDBC
Config.xml
Admin
Serveur d’administration
Instance managée 1
Instance managée 2
Instance managée 3
Cluster Un cluster est un groupe de serveurs managés qui
s’executent en parallèle afin d’apporter performance et fiabilité
Un cluster apparait comme une seule instance Tous les serveurs d’un cluster doivent appartenir à un
même domaine Les serveurs d’un même cluster peuvent se situer sur
une machine physique différente Il peut y avoir plusieurs cluster dans un même domaine
Serveurs d’application
Load balancing d’un cluster
FrontOffice (JSP,servlet) Le Load balancing est externe Utilisation d’un proxy http ou d’un serveur web
BackOffice (EJB) Le Load Balancing est effectué à la connection Les EJB sont compatible avec le cluster Ils sont disponibles sur tous les membres d’un cluster
Serveurs d’application
Gestion du Failover
FrontOffice (JSP,servlet) Les sessions HTTP sont répliqués sur d’autres
serveur du cluster
BackOffice (EJB) Pour les EJB StateFul, les états sont répliqués d’un
serveur à l’autre
Serveurs d’application
Node Manager Process s’executant sur une machine
physique et qui permet le contrôle à distance des serveurs
Doit s’executer sur chaque serveur physique hebergeant une instance
Non associé au domaine
Serveurs d’application
Machine
Permet de définir une machine physique qui héberge un serveur managé
Utilisé par le node manager et par les cluster pour la gestion des machine distante
Serveurs d’application
Exemple d’arborescence Weblogic
Serveurs d’application
Proxy HTTP
HTTP/JSP
JMSEJB
Exemple d’arborescence Weblogic
Serveurs d’application
HTTP/JSP
JMSEJB
Proxy HTTP
HTTP/JSP
JMSEJB
HTTP/JSP
JMSEJB
Exemple d’arborescence Weblogic
Serveurs d’application
HTTP/JSP
Proxy HTTP HTTP/JSP
HTTP/JSP
JMS
EJB
JMS
EJB
JMS
EJB
Configuration du serveur
Permet de gérer les ressources d’un domaine
JDBC JMS …..
Serveurs d’application
Arborescence d’un domaine weblogic
Serveurs d’application
Nom du domaine
Scripts de démarrage
Répertoire racine des fichiers de configuration
Instances des serveurs managés
Gestion fichier de conf Locker le fichier Effectuer les changements Activer les changement (validation des
changements effectués par la console d’administration) Les changements sont transmis aux serveurs mangés
du domaine, 2 étapes : preparation et commit Si une erreur intervient les changements seront
rollbacker
Serveurs d’application
Comment créer un domaine
Via l’utilitaire Weblogic : wlserver_10.0\common\bin\config.bat ( .sh
pour unix) Via un script WLST
Permet des déploiements automatisés d’instances weblogic
Serveurs d’application
Comment créer un domaine Effectuer le paramétrage global du domaine (JDK,
Developpement ou Production Mode)
Configurer le serveur d’administration (mot de passe, port d’écoute … )
Ajouter les instances managés ( indiquer leur localisation, leur nom et le port d’écoute)
Serveurs d’application
Comment créer un domaine
Créer les clusters (si besoin est)
Rattacher les instances managées à une machine (si besoin est)
Configurer les ressources necessaires aux applications ( JDBC, JMS ….. )
Serveurs d’application
Comment configurer un domaine Weblogic existant
Via l’utilitaire Weblogic : wlserver_10.0\common\bin\config.bat ( .sh pour
unix) Via l’interface d’administration Weblogic
http://<hote de la machine hebergeant l’admin>:< port de la machine hebergeant l’admin>/console/
Serveurs d’application
Configurer un pool JDBC
Choix d’un JNDI Choix d’une type de base et d’un
driver associé Information de connexion
Serveurs d’application
Configurer un pool JMS
Via l’interface d’admin , créer un JMS System Module
Permet de stocker d’autres ressources JMS
Deployé sur une instance managée
Serveurs d’application
Configurer un pool JMS
Dans le JMS Module Server, créer une Connection Factory en indiquant le JNDI
Objet de base Permet d ’établir une Connection puis
une Session
Serveurs d’application
Configurer un pool JMS
Dans le JMS Module Server, créer une Queue (ou Topic) en indiquant le JNDI
Permet de définir la file qui sera utilisée dans le serveur Weblogic
Serveurs d’application
Comment déployer une application
Via un deployplan Via la console Choix de l’instance cible pour chacun
des modules à déployer
Serveurs d’application
Questions ?
Serveur d’application