Les Enterprise Beans. Qu'est ce que c'est? Les Sessions Beans Les Web Services Les Message Driven Beans Annotation/Interception
|
|
- Marc Patrice Julien
- il y a 8 ans
- Total affichages :
Transcription
1 Les Enterprise Beans Qu'est ce que c'est? Les Sessions Beans Les Web Services Les Message Driven Beans Annotation/Interception
2 Qu'est ce qu'un EJB Un composant logiciel Ecrit en Java Déployable dans un environnement multitiers Déployable dans un container d'ejb Configurable de façon externe
3 Le container d'ejb Fournit un environnement Sécurisé Transactionnel Distribué Pour gérer et exécuter des EJB
4 Objectifs des EJB Simplifier l'écriture des composants métiers portables Considérer Le développement Le déploiement L'exécution des applications
5 Division des responsabilités Le fournisseur de Bean L'assembleur d'application Le déployeur Le fournisseur de persistence Le fournisseur de conteneur EJB Le fournisseur de serveur EJB L'administrateur
6 Techniquement Un EJB Expose une interface (cf. RMI) Est configurable Est conforme à la spécification Les clients sont Des servlets Des applets Des EJBs Des Client lourds Des Clients Web Services
7 Les types de Beans Les Session Beans pour la logique métier de l'application Sans état Conversationnel Les Message Beans pour la logique orientée message
8 Les Sessions Beans Contiennent la logique métier de l'application Durée de vie limitée à la session d'un client Stateless ou Stateful Un session bean est composé de Une implantation (une classe Java annotée) Des interfaces Remote ou Locale
9 Interface Locale/Remote Deux interfaces possibles pour les EJB Remote : accessible depuis un client distant (RMI/IIOP) L'appel doit être valide pour RMI IIOP RemoteException Sérialisation des paramètres Passage des paramètres par valeur Local : accessible depuis un client local (même JVM)
10 Un Stateless Session Bean Objet non persistant L'état n'est pas conservé entre deux appels
11 Cycle de vie d'un SlSB
12 Stateless Session Bean Implementation Remote Interface
13 Java Client Quelle est la magie ici?
14 Configuration JNDI Paramètres pour la configuration de l'accès au serveur JNDI (spécifique) Le serveur de nommage contient les références aux EJB déployés
15 Un Stateful Session Bean L'objet est non persistant Son état est conservé tout au long de la session Il expose une interface Remote ou
16 Stateful Session Bean
17 Le Client
18 Activation et Passivation Les SFSB consomment de la ressource mémoire Activation/Passivation = pagination système Lorsque la ressource manque, on passive des SFSB Lorsque qu'on doit accéder à un bean passivé,
19 Passivation
20 Activation
21 Cycle de vie des SFSB
22 Structure d'un Session Bean
23 Les callbacks Méthodes invoquées par le : appelée après l'instanciation d'un : appelée avant la destruction
24 Le développement d'un CallBack Coté serveur
25 Le callback
26 L'exécution L'intercepteur est ajouté à la classe
27 Configuration externe Il est possible de décrire les EJB de façon externe (sans annotations) Fichier ejb-jar.xml Surcharge les annotations Cf chapitre 19 de la spécification EJB 3
28 Conclusion sur les Session Bean Composants distribués Exécutable dans un container EJB Fournissent les services métiers Conversationnel Ou non Configurable Sécurité Transaction Ressources
29 Web Service Session Bean EJB 3.0 simplifie le développement et l'utilisation de Web Services Concepts Implantation Implantation d'un client
30 Définition Système logiciel permettant une interaction de machine à machine de façon interopérable sur un réseau Description de l'interface (WSDL) Différents protocole de transport Traitement des messages avec SOAP Couplage plus faible entre services
31 Modélisation de services Interactions par envois de messages Trois types de modèle Choréographie Description des interactions entre un ensemble de services Interface Description des interactions du point de vue d'un service Orchestration Action communicationnelles et interne d'un service
32 Concepts Service provider Service requester Service registry
33 Couplage faible
34 Exemple de Choréographie
35 Exemple d'interface
36 Description de services Web WSDL : description des types et des fonctions offerte par un service BPEL : description d'une orchestration de services WS-Policy : description des politiques d'usage SOAP : protocole d'envoi de messages entre Web Services
37 Hello WebService
38 SOAP Request/Response
39 WSDL Un document WSDL définit un service. Il contient 6 élements Les types : définition des types de données échangés Les messages : définition abstraite des données transmises Les porttype : définition abstraite des opérations (avec input message et output message) Le binding : spécification concrète du protocole et des format de données pour un porttype Le port : point de communication Le service : aggrège un ensemble de ports
40 WSDL Document L'interface Le binding vers l'implantation
41 XSD Schema Représentation des données Déclaration d'un élément <element name="invoicenumber" type="xsd:integer"/> Utilisation d'un élément <InvoiceNumber>12345</InvoiceNumber> Types complexes <complextype name="employeehours"> <sequence> <element name="id" type="xsd:integer"/> <element name="weeklyhourslimit" type="xsd:short"/> </sequence> </complextype>
42 XSD Schema (suite) Importation ou inclusion additional type definition elements (attribute, complexcontent, simplecontent) constraint related elements (restriction, enumeration, pattern) element indicators (maxoccurs, minoccurs, group) extensibility elements (any, extension, redefine) elements for simulating relationships between elements (unique, key, keyref)
43 WSDL Basics
44 L'élement definitions <definitions name="employee" targetnamespace=" xmlns=" xmlns:act=" xmlns:hr=" xmlns:soap=" xmlns:tns=" xmlns:xsd=" </definitions> Références des définitions de types utilisés pour les services
45 L'élément types <types> <schema xmlns=" targetnamespace= " <complextype name="returncodetype"> <sequence> <element name="code" type="xsd:integer"/> <element name="message" type="xsd:string"/> </sequence> </complextype> </schema> </types> Définitions de types locaux
46 Les éléments message et part <message name="getemployeeweeklyhoursrequestmessage"> <part name="requestparameter" element="act:employeehoursrequesttype"/> </message> <message name="getemployeeweeklyhoursresponsemessage"> <part name="responseparameter" element="act:employeehoursresponsetype"/> </message> En gros les messages échangés pour un Web Service
47 Les éléments porttype et operation PortType est remplacé par interface dans la version 2.0 <porttype name="employeeinterface"> <operation name="getweeklyhourslimit">... </operation> <operation name="updatehistory">... </operation> </porttype> Pour faire simple, l'interface du Web Service
48 Les éléments input et output <operation name="getweeklyhourslimit"> <input message="tns:getweeklyhoursrequestmessage"/> <output message="tns:getweeklyhoursresponsemessage"/> </operation> <operation name="updatehistory"> <input message="tns:updatehistoryrequestmessage"/> <output message="tns:updatehistoryresponsemessage"/> </operation> <operation name="submit"> <input message="tns:receivesubmitmessage"/> </operation> Pratiquement, les opérations et leur profile dans le WS
49 L'élément binding <binding name="employeebinding" type="tns:employeeinterface"> <soap:binding style="document" transport=" <operation name="getweeklyhourslimit"> <soap:operation soapaction="..."/>... </operation> <operation name="updatehistory"> <soap:operation soapaction="..."/>... </operation> </binding> En résumé, l'implantation des interfaces
50 Les éléments input et output (bindings) <operation name="getweeklyhourslimit"> <soap:operation soapaction="..."/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> <operation name="updatehistory"> <soap:operation soapaction="..."/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> En clair, l'implantation concrète des opérations
51 Les éléments service, port et endpoint <service name="employeeservice"> <port binding="tns:employeebinding" name="employeeport"> <soap:address location=" </port> </service> En Bref, l'adresse de l'implantation utilisée pour rendre le service
52 SOAP Paradigme d'échange de message stateless et one-way Ne s'occupe pas du routage, du transfert ni de la sémantique Décrit ce que doit faire un noeud SOAP lorsqu'il reçoit un SOAP message Les messages SOAP peuvent être transporté par HTTP/SMTP/...
53 SOAP
54 Header Body
55 La réponse Il y a plusieurs choix
56 request/response/request Element pour la corrélation
57 Gestion des erreurs Une réponse peut contenir un élément Fault Status Explanation Actor (URI) who caused the fault Details
58 JAX-WS JSR 224 Pour se simplifier la vie Deux façons de faire Partir d'une implantation Java et générer le WSDL Partir d'une définition en WSDL et générer les classes Java nécessaires
59 Un exemple simple Nouvelles annotations
60 WSDL généré (1)
61 WSDL généré (2)
62 Le Client d'un service Génération automatique des classes permettant l'appel à partir de l'addresse du service
63 Appel du service en Java Connection au service Appel du service
64 L'appel
65 Conclusion WebServices Introduction limitée Cf description détaillée de WSDL et de SOAP On a vu Comment construire un WS à partir d'une implantation Java Comment appeler un WS en java
66 Conclusion On a vu Session Bean Web Services Implantation de WebServices en Session Bean Client Web Service en Java Et surtout les notions Session Cycle de vie (création/suppression/passivation) Nommage
67 Message Driven Bean Définition et intérêt d'une approche orientée message Utilisation de JMS Les Message Driven Beans
68 Inconvénients de l'approche RMI Le client doit attendre la réponse Le client est couplé au serveur Les causes d'erreurs sont nombreuses Panne serveur Panne réseau Un seul client parle à un seul serveur
69 Approche Orientée Message Requêtes non bloquantes Découplage Sureté de fonctionnement Support émetteurs/récepteurs multiples Performances inférieures
70 JMS Spécification d'un service de messagerie en Java JMS Provider : mise en oeuvre du système Client JMS : application consommatrice ou productrice de messages. Message JMS : objet véhiculant les données entre applications
71 Domaines de communication Les Queues Les Topics
72 Le protocole JMS Trouver le fournisseur Créer une connection Créer une session Trouver la destination Créer un consommateur ou un producteur Envoyer ou recevoir un message
73 Garantie d'acheminement Dans un MOM, l'acheminement des messages est garanti. Un message est émis Il est consommé Si le MOM ne reçoit pas de «ack», il remet le message dans la queue Variantes Certified message delivery Store and Forward
74 Un exemple simple Comme d'habitude, on se connecte au serveur de nommage
75 Les étapes Récupération de la QueueConnectionFactory Création de la connection Création de la session Récupération de la queue
76 La réception des messages Facile à comprendre
77 L'envoi de message Le début est pareil. Ensuite, on crée les messages et on les envoie
78 Les MDB Approche sans MDB Configuration et connection à faire à la main Gestion du cycle de vie Gestion du contexte d'exécution Approche avec Session Bean Aussi gestion du cycle de vie threading
79 Un MDB EJB sans remote/local interface Une seule méthode : onmessage (Listener) Pas de message de retour Pas d'exception Stateless Single threaded
80 Le client est un client JMS
81 file:///c:/documents%20and%20settings/charoy/bureau/capture6.jpg file:///c:/documents%20and%20settings/charoy/bureau/capture7.jpg Un exemple
82 file:///c:/documents%20and%20settings/charoy/bureau/capture8.jpg Configuration avancée Pour les détails, voir la spécification
83 Concepts avancés Transaction différente de celui de l'émétteur du message Le contexte de sécurité n'est pas transmis explicitement Load Balancing plus simple mais attention au comportement des topics dans les clusters
84 Les problèmes L'ordre de traitement des messages n'est pas garanti Les messages poisons (messages faisant toujours échouer le traitement) Traitement manuel Gestion par l'administrateur
85 Les réponses : queue temporaire
86 Les réponses : topic commun
87 Sur les MDB Encore primitif À quand les vrais appels asynchrones Efficace pour la répartition de la charge Meilleure tolérance aux pannes Moins performants
88 Etendre les EJB Appeler un EJB depuis un EJB Annotation Interception Injection
89 Les annotations + variantes (à voir) Permettent de simplifier l'écriture des beans Surchargeables dans un fichier de configuration
90 L'injection Injection de référence Le container se chargent de retrouver des ressources et d'initialiser des variables. Un RandomBean est injecté dans le FacadeBean Pas de NullPointerException
91 Ressource réference Setter Injection
92 Injection du PersistenceContext On y reviendra
93 Les intercepteurs Méthodes invoquées autour ou en remplacement des méthodes métiers Proche de l'aop (rudimentaire) Permettent de séparer la logique métier du code de support Usages : sécurité, logging, auditing
94 Exemple 1 Annotation pour les intercepteurs Poursuite de l'exécution
95 Exemple 2 Accès au contexte de l'appel
96 Utilisation des intercepteurs L'ordre est important
97 Conclusion Simplification de l'accès au ressource (cf aussi les containers clients) L'injection est utilisable pour toutes les ressources nommées Les intercepteurs permettent la séparation des préoccupations Simplification du code métier Egalement configurable de façon externe Principes utilisés dans de nombreux frameworks
98 Ce n'est pas fini On a vu surtout Quels sont les composants distribués (session, service, message) Comment les développer Comment les enrichir On va voir La persistence D'autres concepts avancés (transaction, sécurité)