semaine 8: java 2, enterprise edition1 j2ee: les composants distribués et transactionnels...

35
Semaine 8: Java 2, Enterprise Edition 1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and E-commerce Applications » Simplified Guide to the Java 2, Enterprise Edition • http://java.sun.com/j2ee/j2ee_guide.pdf J2EE Tutorial http://java.sun. com /j2ee/tutorial/1_3- fcs /index. html

Upload: marthe-merlin

Post on 04-Apr-2015

104 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Semaine 8: Java 2, Enterprise Edition1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and

Semaine 8: Java 2, Enterprise Edition 1

J2EE: les composants distribués et transactionnels

• Références• Chap 9 et 10, Livre « Developping Distributed and E-

commerce Applications »• Simplified Guide to the Java 2, Enterprise Edition

• http://java.sun.com/j2ee/j2ee_guide.pdf• J2EE Tutorial

• http://java.sun.com/j2ee/tutorial/1_3-fcs/index.html

Page 2: Semaine 8: Java 2, Enterprise Edition1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and

Semaine 8: Java 2, Enterprise Edition 2

Pourquoi une architecture?

• Flexibilité• Le changement est la norme• Variation du contenu et du contexte• Nouveau produits, nouveaux services, mise à jour• Changement dans les processus d’affaires

• Canaux d’accès variés• Personnalisés selon le client, sa langue, son lieu, ses préférences• Client HTML, client WAP-WML sur un téléphone, client local…• Avec systèmes d’entreprises internes et externes.

• Sécurité• Identification, Confiance, Confidentialité, Contrôle, Intégrité

• Systèmes multi-tiers• Services distribués• Plusieurs systèmes coopèrent

• Intégration • Applications et systèmes existants

Page 3: Semaine 8: Java 2, Enterprise Edition1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and

Semaine 8: Java 2, Enterprise Edition 3

Cycle de vie des composants

• Conception et Développement• Déploiement• Opération• Chaque étape est géré par des personnes différentes et

produit ses livrables

Page 4: Semaine 8: Java 2, Enterprise Edition1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and

Semaine 8: Java 2, Enterprise Edition 4

Systèmes multi-tiers

• 4 tiers• Client HTML• Serveur Web• Serveur applicatif• Serveur base de données

• Pourquoi un tier « serveur d’application »• Pour séparer

• la logique de présentation (Web, HTML)• la logique d’affaire (Entreprise Java Beans)• l’entrepôt des données (SQL)

Page 5: Semaine 8: Java 2, Enterprise Edition1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and

Semaine 8: Java 2, Enterprise Edition 5

Composantes J2EE

Page 6: Semaine 8: Java 2, Enterprise Edition1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and

Semaine 8: Java 2, Enterprise Edition 6

Composantes J2EE

• Clients • Fureteur HTML ou WML• Application ou Applets Java• Application DCOM-Microsoft

• Visual Basic

• Services de présentation Web• Servlets• Pages JSP

• Services applicatifs distribués• « Enterprise JavaBeans »

• Session• Entité• Message

• Services de la plateforme• Sécurité• Transactions• Ressources de type connections

Page 7: Semaine 8: Java 2, Enterprise Edition1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and

Semaine 8: Java 2, Enterprise Edition 7

Services auxiliaires J2EE

• Répertoire central• Java Naming and Directory Interface – JNDI

• Accès aux bases de données• Java Database Connectivity – JDBC

• Messages asynchrones• Java Messaging Service – JMS

• Accès au courrier électronique• JavaMail, supporte IMAP4, POP3 et SMTP

• Manipulation de documents XML• Java API for XML Pack - JAXP

• Identification et sécurité• JAAS - Java Authentification and Autorisation Service• Version Java de PAM, « Plugable Authentification Module »

Page 8: Semaine 8: Java 2, Enterprise Edition1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and

Semaine 8: Java 2, Enterprise Edition 8

Service Web et base de données

• Déjà vue

Page 9: Semaine 8: Java 2, Enterprise Edition1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and

Semaine 8: Java 2, Enterprise Edition 9

Service applicatif distribué

• Composants d’entreprise Java• Distribués sur plusieurs systèmes

• Enterprise Java Beans, EJB• un objet distant• Un patron d’utilisation

• Création, appels et destruction

Page 10: Semaine 8: Java 2, Enterprise Edition1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and

Semaine 8: Java 2, Enterprise Edition 10

Quoi? Un objet distant

• Le client appelle l’objet distant sur le serveur• La souche (stub) et le squelette (skeleton ), respectivement sur le client

et le serveur, assurent la conversion des communications entre les systèmes.

• Stub et Skeleton sont aussi appelés « Proxy object »• La couche de référence (RRL, remote Reference Layer) est chargé du

système de localisation afin de fournir un moyen aux objets d'obtenir une référence à l'objet distant.

• La couche de transport permet d'écouter les appels entrants ainsi que d'établir les connexions et le transport des données sur le réseau par l'intermédiaire du protocole TCP.

Page 11: Semaine 8: Java 2, Enterprise Edition1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and

Semaine 8: Java 2, Enterprise Edition 11

Quoi? Un objet distant

• Séquence d’appel• 1- Trouver dans le registre l’objet distant• 2- Le registre retourne un objet souche• 3- Le client utilise cette souche locale pour communiquer

avec l’objet distant• Exemple

• RMI, CORBA• DCOM+• SOAP pour les Web services

Page 12: Semaine 8: Java 2, Enterprise Edition1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and

Semaine 8: Java 2, Enterprise Edition 12

Un composant d’entreprise Java

• Un “Entreprise Java Beans” - EJB• Il définit:

• Les objets proxy, du côté client et du côté serveur;• Un répertoire de référence

• Java Naming Directory Interface, JNDI• Entre autres, contient le dictionnaire

• aux objets et services disponibles• aux objets et services actifs

• Le cycle de vie, des 2 côtés• La création• L’utilisation• La gestion de la sécurité• La gestion des transactions• La destruction

Page 13: Semaine 8: Java 2, Enterprise Edition1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and

Semaine 8: Java 2, Enterprise Edition 13

La création des EJB

• Les EJB utilisent le patron de « fabrique d’objet » - Factory pattern

• Dans la documentation des EJB, • Le « factory » est appelé le « Home »• On sépare la fabrique d’une instance

d’objet;• Pour créer une nouvelle instance d’EJB

• On localise et instancie le « Home » dans JNDI;• Puis, sur ce Home, on fait un appel à la méthode

« create », qui retourne sur le client la souche.

Page 14: Semaine 8: Java 2, Enterprise Edition1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and

Semaine 8: Java 2, Enterprise Edition 14

Exemple d’utilisation

1.Create a JNDI naming context. • See About JNDI Naming for background on naming contexts.

Context initial = new InitialContext();

2.Retrieve the object bound to the name ejb/SimpleConverter. Object objref = initial.lookup ("java:comp/env/ejb/SimpleConverter")

3.Narrow the reference to a ConverterHome object. ConverterHome home = (ConverterHome) PortableRemoteObject.narrow(objref, ConverterHome.class);

4.Creating an Enterprise Bean Instance

Converter currencyConverter = home.create();• To create the bean instance, the client invokes the create method on the ConverterHomeobject. • The create method returns an object whose type is Converter. • The remote Converter interface defines the business methods of the bean that the client may call. • When the client invokes the create method, the EJB container instantiates the bean and then invokes the

ConverterBean.ejbCreate method. The client invokes the create method as follows:

Page 15: Semaine 8: Java 2, Enterprise Edition1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and

Semaine 8: Java 2, Enterprise Edition 15

4 types de composants d’entreprise Java

• Session sans état• Exemple: http

• Session avec état• Exemple: un terminal

• Entité• Exemple: un compte client

• Message• Traitement en différé (batch)

Page 16: Semaine 8: Java 2, Enterprise Edition1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and

Semaine 8: Java 2, Enterprise Edition 16

EJB Session

• Représente l’activité des clients• La façade des clients

• 2 catégories de composants de type session• Sans conservation de l’état de la

conversation• Avec conservation de l’état de la

conversation

Page 17: Semaine 8: Java 2, Enterprise Edition1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and

Semaine 8: Java 2, Enterprise Edition 17

Composant sans état

• (Stateless Session Bean)

• Comme HTTP• Dessert un appel distant à la fois• D’un appel à l’autre, on peut changer

de client• Le même composant peut être

partagé entre les clients d’un appel à l’autre

Page 18: Semaine 8: Java 2, Enterprise Edition1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and

Semaine 8: Java 2, Enterprise Edition 18

Avec état

• (Statefull Session Bean)• Conserve l’état de la conversation• Unique pour chaque client• Se ferme à la fin de la conversation

Page 19: Semaine 8: Java 2, Enterprise Edition1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and

Semaine 8: Java 2, Enterprise Edition 19

EJB Entité

• Représentent les données d’affaires complexes et persistentes• Une ou plusieurs tables

• L’identité de la donnée est indépendante du logiciel client

• Utilisés par un ou plusieurs clients• Aussi accessible à partir des EJB-Sessions

Page 20: Semaine 8: Java 2, Enterprise Edition1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and

Semaine 8: Java 2, Enterprise Edition 20

Gestion de la persistance (EJB- Entité)

• Automatiquement• (Container-Managed Persistence)• Les attributs de l’objet et le graphe de

l’objet sont automatiquement traduit en colonnes d’une table ou de plusieurs tables SQL

• Manuellement• (Bean-Managed Persistence)• Le code du programmeur gère la lecture et

l’écriture dans les tables SQL

Page 21: Semaine 8: Java 2, Enterprise Edition1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and

Semaine 8: Java 2, Enterprise Edition 21

EJB Entité VS « Data Access Object »

• Les entités EJB sont très lourdes:• Accès réseaux• Vérification de sécurité à refaire à chaque

appel• Solutions:

• EJB en mode local• Traduction de l’objet aux tables fait

automatiquement par le serveur J2EE• Très performant maintenant

• Objet d’accès aux données - DAO

Page 22: Semaine 8: Java 2, Enterprise Edition1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and

Semaine 8: Java 2, Enterprise Edition 22

EJB Message

• Un objet qui reçoit les messages asynchrones• Activés par Java Messaging Service, JMS• Les message peuvent contenir un document XML, un objet

sérialisé ou tout autre texte• Ces objets sont complètement découplés des logiciels qui

envoient les messages• Essentiels pour les applications de B2B et l’intégration inter-

applications

Page 23: Semaine 8: Java 2, Enterprise Edition1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and

Semaine 8: Java 2, Enterprise Edition 23

EJB-MessagePatron d’utilisation

• Aussi appelé traitement en différé - « batch »• Le logiciel client envoie un message asynchrone et

confirme au client que le message est bien transmis;• Le EJB-Message reçoit et traite le message;• Le EJB-Message produit un résultat dans un message

asynchrone et/ou un résultat persistant dans une base de données;

• Le logiciel client reçoit le message asynchrone et/ou interroge la base de données pour connaître le résultat de sa requête.

Page 24: Semaine 8: Java 2, Enterprise Edition1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and

Semaine 8: Java 2, Enterprise Edition 24

Transactions

• Les appels aux EJB se font dans un contexte transactionnel.• Une transaction

• garantie que toutes les modifications • À un enregistrement• À plusieurs enregistrements• À plusieurs tables• Dans une même base de données, • Ou plusieurs,

• se font et sont persistantes, • ou aucune modification n’est faite,

• En cas d’erreur• Un « rollback » est générée

Page 25: Semaine 8: Java 2, Enterprise Edition1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and

Semaine 8: Java 2, Enterprise Edition 25

Gestion de la transaction

• Automatique• doOrder() throws EJBException• Début de transaction

• Avant l’appel à une méthode d’une EJB

• Fin de transaction• Après l’appel à une méthode d’une EJB

• Exception et erreurs automatiquement traduit en Rollback pour la base de données

• Manuelle• Commit() ou Rollback() peuvent faits à l’intérieur de la méthode

doOrder() de l’EJB

Page 26: Semaine 8: Java 2, Enterprise Edition1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and

Semaine 8: Java 2, Enterprise Edition 26

Java Naming and Directory Interface

• 2 rôles• Passerelle vers des répertoires d’entreprises• Répertoire centralisé des objets distribués

J2EE• Fabrique d’objets « Home »• Variables partagées• Ressources partagées et critiques- Les références à ces ressources sont mises dans

JNDI- Connections à la base de données JDBC• Source de données JDBC• Noms des queues JMS

Page 27: Semaine 8: Java 2, Enterprise Edition1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and

Semaine 8: Java 2, Enterprise Edition 27

Passerelle vers d’autres répertoires d’entreprises

• Adaptables• LDAP

• Lightweight Directory Access Protocol• Bottin d’entreprise des utilisateurs, standard

(Windows NT)• Gestion de la sécurité des utilisateurs

• Mots de passe• Certificats et clefs publiques

• NIS• Gestion des utilisateurs d’un réseau Unix

• Fichiers• COS (Corba)

Page 28: Semaine 8: Java 2, Enterprise Edition1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and

Semaine 8: Java 2, Enterprise Edition 28

Java Database Connectivity

• Base: Accès aux bases de données• Optionnel:

• Pool de connections• Transactions distribuées• Ensemble d’enregistrements

• Rowset

Page 29: Semaine 8: Java 2, Enterprise Edition1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and

Semaine 8: Java 2, Enterprise Edition 29

Java Messaging Service

• But: connecter entre eux un grand nombre de services et de systèmes asynchrones

• Messages asynchrones• Au travers d’une queue, FIFO• 2 garanties de livraison

• Au moins une fois• Seulement une fois

• Écriture et lecture sont inclus dans une transaction

Page 30: Semaine 8: Java 2, Enterprise Edition1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and

Semaine 8: Java 2, Enterprise Edition 30

2 modèles de distribution

• Point à point• Une application à une autre• Un utilisateur à un autre (comme pour un courrier électronique

fiable)

• Publier/souscrire• D’un émetteur à un groupe de lecteurs

• newsgroup • côtes de la bourse

• Différenciés par le contenu du sujet

Page 31: Semaine 8: Java 2, Enterprise Edition1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and

Semaine 8: Java 2, Enterprise Edition 33

Infrastructure basée sur un bus à messages

Channel Engine

mq

Channel Engine

mq

AgentAgent

AgentAgent

SendTo React

Ser

ver

A

Server B

• Acheminement des notifications• Exécution de la réaction du destinataire• Distribution: forte interconnexion des bus locaux

Page 32: Semaine 8: Java 2, Enterprise Edition1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and

Semaine 8: Java 2, Enterprise Edition 34

Disponibilité de JMS

• Plusieurs implémentations et passerelles vers des systèmes de messagerie existants• IBM MQSeries• MSMQ de Microsoft• TIBCO• Oracle• BEA

Page 33: Semaine 8: Java 2, Enterprise Edition1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and

Semaine 8: Java 2, Enterprise Edition 35

JavaMail

• Classes pour envoyer et recevoir des courriers électroniques

• SMTP, IMAP4, POP3• Construit les en-têtes d’un message• Supporte les messages MIME

• Permet d’envoyer et de recevoir • Du HMTL, du XML, • des attachements, etc…

Page 34: Semaine 8: Java 2, Enterprise Edition1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and

Semaine 8: Java 2, Enterprise Edition 36

Connecteurs pour J2EE

• Références• Voir http://java.sun.com/j2ee/connector• Voir http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/Connector.html• Voir http://www.eaijournal.com/Article.asp?ArticleID=347&DepartmentID=5

Page 35: Semaine 8: Java 2, Enterprise Edition1 J2EE: les composants distribués et transactionnels Références Chap 9 et 10, Livre « Developping Distributed and

Semaine 8: Java 2, Enterprise Edition 37

Connecteurs

• Pourquoi?• Se connecter aux systèmes applicatifs existants• SAP, PeopleSoft, autres

• Quoi?• Réaliser l’application au niveau des systèmes de

l’entreprise• Équivalent à l’accès JDBC pour les applications

• Transactionnel• Un enregistrement à la fois