2007-2008 M2PGI SRR - GICOM 1 & 2 MP2GI SLE – PM2M Sara Bouchenak (GICOM 1) Didier Donsez & Johann Bourcier (GICOM 2 – PM2M) Université Joseph Fourier (Grenoble 1) Prenom.Nom@imag.fr
Sommaire Objectifs fonctionnels Objectifs pédagogiques Architecture globale Organisation et planning Résultats attendus
Objectifs pédagogiques Intégration des plusieurs applications en utilisant plusieurs technologies Toucher du doigt les mécanismes internes des intergiciels Utiliser des outils de développement Organiser vos déploiements
GICOM
Le point de départ : eCOM (JavaEE) Java Apps RMI Didier Donsez Java app ECOM HTML/XML HTTP Didier Donsez Web Browser ERP DataSource JCA Web Server Servlet/JSP RMI EJB Server Session Bean SOAP Engine JMS MOM Message Repository JMS RDBMS DataSource JDBC WML/WMLC/iMode WAP/UMTS Entity Bean MsgDriven Bean JMS Didier Donsez SOAP HTTP/SMTP EIS
Architecture globale de GICOM Annuaire UDDI Fournisseurs Web Browser Serveur J2EE eCOM Serveur WS Fournisseur 1 SOAP HTTP HTML HTTP JSP/ Servlets EJB Serveur WS Fournisseur N BDR SOAP JMS Mobile Phone cHTML HTTP WML WAP Serveur WS Parité Devise SOAP HTTP IIOP Serveur CORBA Banque B1 Serveur CORBA Banque B2 Standalone Application Annuaire CORBA des Banques IIOP Serveur CORBA Agence A1 de B1 Serveur CORBA Agence A1 de B2 Serveur CORBA Agence A11 de B1 Serveur CORBA Agence A21 de B2 Console JMX
Architecture globale de GICOM Web Browser Standalone Application Mobile Phone Serveur J2EE eCOM Serveur WS Fournisseur 1 Fournisseur N JSP/ Servlets EJB BDR Parité Devise Annuaire UDDI Fournisseurs Serveur CORBA Banque B1 Annuaire CORBA des Banques Agence A1 de B1 Agence A11 de B1 Banque B2 Agence A1 de B2 Agence A21 de B2 IIOP SOAP HTTP HTML HTTP cHTML HTTP WML WAP SOAP JMS Console JMX
Les étapes de GICOM Sous système bancaire Sous système bancaire persistant Sous système bancaire persistant et fiabilisé eCOM étendu et intégration du sous-système bancaire Sécurisation des communications Sous système fournisseur Déploiement des servants Administration et supervision des serveurs
Etape 1 : eCOM étendu But: voir des techniques avancées J2EE Préliminaires Order comporte la devise utilisée et la parité avec l’Euro MailerBean (dans les exemples de JOnAS) doit être installé Intégration du sous-système bancaire Account disparaît pour être remplacer par un bean FundTransfer Initialisation des parités des devises utilisés via un vrai WebService public Rafraîchissement de façon périodique (EB Timer) Sécuriser l’interface Web avec SSL (étape 5) Certificat X509 pour le serveur Fiabiliser MailerBean (non traité en 07-08) javax.ejb.SessionSynchronization pour le Stateful Session
Etape 1 : eCOM étendu (non traité en 07-08) But: voir des technologies liées à l’informatique mobile WAP, iMODE, J2ME Prise en compte des terminaux mobiles Par les servlets et les JSP MIDLet consultant le catalogue Mobile Phone
Etape 2 : Sous système bancaire Techniques CORBA Modèle de programmation des servants par héritage (non traité) par délégation (implémentation fournie) Serveur Générique (celui du TP SAR) À compléter (configurations .properties, .xml, .json au choix) Fonctionnalités du sous système bancaire gestion des comptes bancaires distribuées sur plusieurs serveurs 1 IDL commun : Interopérabilité entre trinome Plusieurs banques (implémentations différentes : 1 par trinome) 2 types de User-Agent: C# versus Java TUI versus GUI
Etape 2 (i) : Rappel CORBA Site client Site Service de Nommage Serveur applicatif Objet NamingContext Objet o1 Applet Application Servlet/SB 1 : bind("nomSymbolique",o1) 2 : resolve("nomSymbolique") 2 : o2=o1.m1() Objet o2 3 : res=o2.m2(o1)
Etape 2 (ii) : Sous système bancaire User-Agent (Java,C#) Site Service de Nommage Site d’un Banque Site d’une Agence Objet NamingContext Objet Branch Objets Account Objets Customer Objet Bank Application Applet Servlet/SB 1 : bind(bankName,bank) 3 : resolve(bankName) 4 : getBranch(brn) 5 : getCustomer(custName) 6 : getAccount(acn) 2 : registerBranch(brn,b) Notation opérations effectuées au redémarrage des serveurs opérations effectuées pour le compte de l’UA
Etape 3 : Sous système bancaire persistant Objectif Rendre les objets persistants aux arrêts (shutdown,crash) des serveurs Techniques CORBA Objets persistants 2 méthodes load(), save() PPOA (PersistentPOA) POM (Persistent Object Manager) Affectation des ID Activation/Passivation des objets Externalisation des objets (1 par fichier) Ecriture atomique (par fichier ombre) A intégrer au serveur générique
Object YY héritant d’un YYPOA Etape 3 : Sous système bancaire persistant Activation d’un objet avec le PPOA et le POM id.ser POM Object YY héritant d’un YYPOA Object XX Persistent Object Persistent State XXPOATie POATie Activator <id> RootPOA PersistentPOA AOM idref AOM idref <poa> orb <host,port> request
Etape 4 : Sous système bancaire persistant et fiabilisé Objectif Rendre ACID plusieurs opérations sur les objets Account Techniques Objets recoverables Retour à la valeur précédente en cas d’abandon Moniteur transactionnel pilotant la validation à 2 phases 1 GTM global et 1 LTM pour chaque serveur Contrôle de concurrence par estampillage Intégration à eCOM Par FundTransfer javax.ejb.SessionSynchronization Stateful Session
Etape 4 : Sous système bancaire persistant et fiabilisé Architecture Site TM globale TM Global Journal Site Initiateur (bean FundTransfer) Site Agence Site Agence Site Agence TM Local TM Local TM Local Journal Journal Journal Obj Reco Obj Reco Obj Reco
Etape 4 : Sous système bancaire persistant et fiabilisé Initialisation serveur commerce serveur transaction agence client agence fournisseur begin() enroll(trs,…) enroll(trs, …) debit(trs,a) credit(trs,a) trs ok void cpt+=a cpt-=a
Etape 4 : Sous système bancaire persistant et fiabilisé Terminaison serveur commerce serveur transaction agence client agence fournisseur commit() prepare() votecommit void ok
Etape 4 : Sous système bancaire persistant et fiabilisé Terminaison avec échec serveur commerce serveur transaction agence client agence fournisseur commit() prepare() votecommit voterollback rollback() void ko
Etape 5 : Sécurisation des communications (en option) Objectifs Sécuriser les communications entre eCOM et les browsers Authentification du serveur / Authentification du client administrateur Sécuriser les communications entre les serveurs CORBA (non traité en 07-08) Techniques Certificats HTTP / SSL IIOP / SSL
Etape 6 : Sous système fournisseur Objectifs Prise de commande auprès des fournisseurs
Etape 6a : Sous-Système Fournisseur en mode MOM XAConnection (transactionnel) JORAM Messaging server Serveur Fournisseur F1 DB1 Message Driven Bean Message Queue F1 Entity Bean Serveur eCOM Message Queue SS SB MsgProducer Serveur Fournisseur F2 Point-To-Point Messaging When one process needs to send a message to another process, Point-To- Point Messaging can be used. However, this may or may not be a one-way relationship. The client to a Messaging system may only send messages, only receive messages, or send and receive messages. At the same time, another client can also send and/or receive messages. In the simplest case, one client is the Sender of the message and the other client is the Receiver of the message. There are two basic types of Point-to-Point Messaging systems. The first one involves a client that directly sends a message to another client. The second and more common implementation is based on the concept of a Message Queue. Such a system is shown in Figure 2. The point to note in Point-to-Point messaging is that, even though there may be multiple Senders of messages, there is only a single Receiver for the messages. Message Queue F2 DB2 Message Driven Bean Entity Bean En option : prévoir des messages FournisseureCOM pour notifier de la progression de la préparation/expédition de la commande. Le serveur eCOM est abonné à une MessageQueue «ShippingStatus»
Etape 6b : Sous-Système Fournisseur en mode Web Service Modèlisez le WebService Pb de l’indisponibilité temporaire du WS d’un fournisseur Web Service Fournisseur 1 JOnAS Server DB1 Serveur GICOM JDBC EB3 Web Service WSDL Description EB3 SOAP over HTTP Web Service Business Object EB3 generated stub Business Object Web Service Fournisseur 2
Etape 7a : Conditionnement et déploiement des objets CORBA OSGi Conditionnement et déploiement d’applications Java Objectifs Conditionner et déployer les servants CORBA Travail Porter le GenericServer sur une plate-forme OSGi
Etape 7b : Administration et supervision des serveurs JMX Standard Java pour l’administration d’applications Java Objectifs Superviser les principaux éléments des serveurs CORBA POA, POM (nb objets crées, nb objets courants, nb objets actifs), Portable Interceptors (nb requêtes reçus, nb requêtes échec), … Déployer automatiquement les objets CORBA via un MBean d’administration du framework OSGi Travail Enrichir l’OSGiGenericServer d’un MBeanServer (JMXAgent) pourvu de connecteurs RMI et d’adapteurs HTTP Scripts ANT (Tache ANT JMX) générés à partir d’une description d’architecture Construire un repository OBR (tache ANT) Ajout d’un plugin (Tabs) à la JConsole (JavaSE 6.0)
Planning de GICOM Sous système bancaire GICOM1 Sara Sous système bancaire Sous système bancaire persistant Sous système bancaire persistant et fiabilisé GICOM2 Johann eCOM étendu et intégration du sous système bancaire Conditionnement et déploiement Corba Sous système fournisseur Administration et supervision des serveurs
Planning GICOM GICOM1 GICOM2 S1 Cours Introduction à l’application bancaire (étape 2) Cours OSGi S2 TD Etape 2 TP OSGi S3 Cours PPOA (étape 3) Libre (ou séminaire RTSJ avec les SLE) S4 TD Etape 3 Cours MOM/JMS et WebServices S5 Cours Moniteur transactionnel (étape 4) Fournisseurs eCOM (étape 6) S6 TD Etape 4 Cours/Tutorial JMX (étape 7b) S7 TD Etape 4 Monitoring /Déploiement JMX S8 ?? Permanence S9 ?? Permanence S10 Séminaire LDAP Soutenance
Environnements/intergiciels Supports JavaSE 6.0 de SUN Serveur J2EE JOnAS 4.x (EJB3.0+WS Metadata) http://jonas.objectweb.org intègre Jakarta Tomcat Intègre Apache AXIS pour les Web Services (SOAP & WSDL) Apache JAMES pour le serveur de mails (SMTP/POP) ORB JacORB (http://www.jacorb.org) ou Sun ORB Browser Web (MS IE, Firefox, Safari) J2ME Wireless Toolkit (2.x) Emulateur DoJa (DoCoMo iappli) SDK .NET Framework (C#)
Qualité du logiciel produit MetaWare Eclipse + Plugins (XML Buddy, Lomboz, JOPE, …) Apache Ant Apache Maven Versionnement des sources (CVS,SVN) Test unitaire (Cactus) JavaNCSS http://www.kclee.com/clemens/java/javancss/ Vous devrez produire un rapport de métriques sur le source Apache JMeter Vous devrez produire un rapport sur les performances mesurées du site eCOM+application bancaire+ …
Modalité pédagogique (i) Organisation Groupe de 3 (ou 2) Elire un chef de projet identifié du début à la fin Attribuer des rôles/spécialités Auto-formation Gestion des risques
Modalité pédagogique (ii) Planning 3+3 séances de cours (18 Heures) Explication du contenu d’une étape en salle TD ~10 séances encadrées en salle machine (30 Heures) Encadrement direct en salle machine Accès aux salles machine sur créneau réservé Travail personnel en dehors des cours Mail
Modalités d'évaluation (résultat) Documents à rendre Démonstration finale (sur 8 à 10 PCs) Expliquer les principaux choix de conception Montrer l’aspect multi-utilisateurs du logiciel Montrer les performances du logiciel Montrer l’administration du logiciel (observation, déploiement multi-sites) serveur eCOM, serveurs CORBA et BD répartis … reprise après arrêt, … NB la partie eCOM a déjà été évaluée : inutile de la présenter
Documents à rendre Gestion de projet « allégé » Dossier qualité membre de l‘équipe rôle (chef de projet, expert techno, …) Découpage en taches des étapes et affectations aux membres Temps passée sur les taches Dossier qualité Rapport JavaNCCS (commenté) Dossier d‘évaluation Système Rapport sur les performances (scénario du benchmark, configuration matérielle, nombre de transactions, …) Distribution des sources prêt à installer (ant install) avec 1 page de manuel d’installation et avec un jeu de données (CORBA, EJB)
Liens Vers le sujet http://www-adele.imag.fr/users/Didier.Donsez/ujf/GICOM/GICOM_ENS
Bon ! Faut s’organiser Trinome M2PGI SRR Thème eCOM Banques Crédit Agricole, Crédit Lyonnais BNP-Paribas, Banque Directe Crédit du Nord, Société Générale La Poste, Banque Rothschild Caixa, Caisse d’Epargne
Bonus Track
IOR http://www. iona. com/support/docs/e2a/asp/5 Host IP @ POA Id PID IIOP Version
Serveur Serveur de Commerce Navigateur Web De l’Acheteur Client Corba Serveur HTTP BD Catalogue JDBC Servlets Navigateur Web De l’Acheteur Serveur Fournisseur 1 « Jardin de Provence » Commande Fournisseur 2 « Disquaire » Serveur Banque Serveur Corba Banque Serveur Agence Bancaire Agence Client Compte Client Corba de l’Agent de la Banque Serveur Transaction Transaction HTTP HTTPS IIOP IIOP/SSL