La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Masters IIGLI et ILGII – Intranet internet extranet – 2006-2007 – Claude Montacié 1 Cours n° 11 Services Web et plateforme J2EE.

Présentations similaires


Présentation au sujet: "Masters IIGLI et ILGII – Intranet internet extranet – 2006-2007 – Claude Montacié 1 Cours n° 11 Services Web et plateforme J2EE."— Transcription de la présentation:

1 Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 1 Cours n° 11 Services Web et plateforme J2EE

2 Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 2 1.Services de présentation  Les Servlettes  Pages JSP (Java Server Page)  Déploiement de WAR (Web Archive) 2.Services d’application  Composants transactionnels (Entity Java Bean)  Déploiement d’EJB Sommaire

3 Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 3 INTRODUCTION INTRODUCTION Bibliographie Bibliographie Eric Sarrion, Développement Web avec J2EE, O'Reilly, Bruce W. Perry, Java Servlet and JSP Cookbook, O'Reilly, Laboratoire Supinfo, EJB 3 : Des concepts à l'écriture du code - Guide du développeur, Dunod, Etienne Langlet, Apache Tomcat 5 : Serveur d'application Java, ENI, jonas.objectweb.org

4 Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 4 Schéma de développement d’applications internet, intranet et extranet Proposition de la société Sun (/java.sun.com/javaee/5/docs/api/) Architecture d’applications distribuées à base de composants (API) client, serveur, conteneur, composant logiciel Spécification des interfaces et de l’environnement d’application Développement et déploiement rapide de services WEB fiables persistance des données gestion de la mémoire sécurisation des transactions Fourniture par des entreprises tierces de serveurs J2EE tests de certification IBM (WebSphere), Oracle, BEA (WebLogic), Bordland, … ObjectWeb (open-source Jonas), Jboss group (open-source commercial Jboss) Solutions alternatives :.NET framework, SAP INTRODUCTION INTRODUCTION Java 2 Entreprise Edition (J2EE) Java 2 Entreprise Edition (J2EE)

5 Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 5 Services de présentation Servlets : Gestion coté serveur de réponses aux requêtes client (e.g., protocole http) JSP, JSF : Pages Web dynamiques Services d’application EJB : Composants distribués transactionnels JTA : Gestion des transactions JAXP : Analyse de documents XML JAXB : Sérialisation de données en XML JMX : Administration des applications JAXR : Enregistrement de Web Services Services de communication JMS : Communication asynchrone JAXM : Communication asynchrone par XML JAX-RPC : Communication synchrone par XML JavaMail : Gestion des mails RMI : Communication distante entre des objets java Java IDL : Communication entre objets Java et objets non-Java (CORBA) Services de connexion JNDI : Connexion à des annuaires, notamment des annuaires LDAP JDBC : Connexion à des bases de données JCA : Connexion, notamment à des PGI INTRODUCTION INTRODUCTION Java 2 Entreprise Edition (J2EE) - Composants Java 2 Entreprise Edition (J2EE) - Composants

6 Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 6 1. SERVICES DE PRESENTATION 1. SERVICES DE PRESENTATION Principes Principes Indépendance entre présentation et application Heuristique de conception Modèle-Vue-Contrôleur (MVC) pour l’IHM Simplification de la maintenance et amélioration de la sécurité Multiplicité des vues (présentation) sur un modèle unique de données Création dynamique de pages web Adaptation aux données provenant du modèle Traitement automatique de données structurées Formulaire, tableau Deux types de composants Pages web dynamiques (Java Server Page et Java Server Face) API Java pour le traitement des requêtes (Servlet) Exécution sur des serveurs J2EE (moteur de servlet)

7 Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié LES SERVLETTES 1.1 LES SERVLETTES La classe GenericServlet (1/2) – Cycle de vie La classe GenericServlet (1/2) – Cycle de vie Création de la classe à la réception de la requête Méthodes appelées à la création void init() void init(ServletConfig config) Destruction de la classe à la fin du traitement Méthode appelée avant à la destruction void destroy() Fichier des traces d’exécution Méthodes d’écriture void log(String msg) void log(String message, Throwable t) Traitement de la requête et d’envoi de la réponse void service(ServletRequest req, ServletResponse res)

8 Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié LES SERVLETTES 1.1 LES SERVLETTES La classe GenericServlet (2/2) - Accesseurs La classe GenericServlet (2/2) - Accesseurs Accès aux paramètres de la requête Ensemble de couples attribut-valeur Liste de Attributs Enumeration getInitParameterNames() Valeur associé à un attribut String getInitParameter(String name) Caractéristiques de la servlet Caractéristiques générales ServletConfig getServletConfig() Auteur, version. String getServletInfo() Nom String getServletName() Variables globales associées à la servlet Partage de données entre servlet ServletContext getServletContext()

9 Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié LES SERVLETTES 1.1 LES SERVLETTES Interface ServletRequest – caractéristiques réseau Interface ServletRequest – caractéristiques réseau Protocole Réseau String getProtocol() Nom et version du protocole réseau boolean isSecure() Est-ce un protocole sécurisé ? Nom, adresse IP et port du client envoyant la requête String getRemoteHost() Nom String getRemoteAddr() Adresse IP int getRemotePort() Port Nom, adresse IP et port du serveur destination de la requête String getServerName() Nom int getServerPort() Adresse IP Nom, adresse IP et port de l’interface recevant la requête String getLocalName() Nom String getLocalAddr() Adresse IP int getLocalPort() Port

10 Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié LES SERVLETTES 1.1 LES SERVLETTES Interface ServletRequest – caractéristiques réseau Interface ServletRequest – caractéristiques réseau public class testServletRequestNet extends HttpServlet { protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { PrintWriter writer = res.getWriter(); // protocole utilisé writer.println( req.getProtocol() + " " + req.isSecure()); // adresse du client writer.println(req.getRemoteHost() + " " + req.getRemoteAddr() + " " + req.getRemotePort()); // adresse du serveur writer.println(req.getServerName() + " " + req.getServerPort()); // adresse de l'interface writer.println(req.getLocalName() + " " + req.getLocalAddr() + " " + req.getLocalPort());} } testServletRequestNet.java HTTP/1.1 false lili

11 Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié LES SERVLETTES 1.1 LES SERVLETTES Interface ServletRequest – caractéristiques de la requête Interface ServletRequest – caractéristiques de la requête Préférences du client Locale getLocale() Corps de la requête String getCharacterEncoding() codage des caractères int getContentLength() taille en octets. String getContentType() codage MIME utilisé Accès au corps de la requête ServletInputStream getInputStream() Flux de lecture binaire BufferedReader getReader() Flux de lecture texte Accès aux paramètres de la requête String getParameter(String nom) Valeur d’une requête d’un nom donné Map getParameterMap() conteneur associatif contenant les requêtes.

12 Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié LES SERVLETTES 1.1 LES SERVLETTES Interface ServletRequest – caractéristiques de la requête Interface ServletRequest – caractéristiques de la requête public class testServletRequestReq extends HttpServlet { protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { PrintWriter writer = res.getWriter(); // préférences du client writer.println(req.getLocale().getDisplayLanguage()); // caractéristiques du corps de la requête writer.println(req.getCharacterEncoding() + " " + req.getContentLength() + " " + req.getContentType()); // Lecture des paramètres de la requête Map m = req.getParameterMap(); Iterator it = m.entrySet().iterator(); String[] valeurs; while (it.hasNext() == true) { Map.Entry entrée = (Map.Entry)it.next(); writer.print(" " + entrée.getKey() + ":"); valeurs = (String[])entrée.getValue(); for (int j = 0;j < valeurs.length;j++) writer.print(valeurs[j] + " "); writer.println(); } } } testServletRequestReq.java

13 Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié LES SERVLETTES 1.1 LES SERVLETTES Interface ServletRequest – caractéristiques de la requête Interface ServletRequest – caractéristiques de la requête

Nom Prénom } testServletRequestReq.html français null 28 application/x-www-form-urlencoded prenom:Claude nom:Montacié

14 Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié LES SERVLETTES 1.1 LES SERVLETTES Interface HttpServletRequest Interface HttpServletRequest Authentification String getAuthType() Méthode d’authentification String getRemoteUser() Nom du client (après authentification) Requête String getMethod() Type de méthode associé (GET, POST, PUT) long getDateHeader(String name) Date associée à un champ d’entête String getHeader(String name) Valeur associée à un champ d’entête Enumeration getHeaderNames() Liste des champs d’entête String getQueryString() Partie interrogation de la requête (?….) Chemins d’adressage String getRequestURI() String getPathInfo() String getContextPath() String getPathTranslated() String getServletPath() Gestion de la persistance Lecture des cookies associés à la requête Cookie[] getCookies() cookies associés à la requête boolean isRequestedSessionIdFromCookie() Lecture des paramètres de la session courante HttpSession getSession() HttpSession getSession(boolean cr) String getRequestedSessionId()

15 Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié LES SERVLETTES 1.1 LES SERVLETTES Persistance de la connexion Persistance de la connexion // Recherche d'un cookie d'attribut Nom String Valeur = null; Cookie[] cookies = request.getCookies(); for(int i=0; i < cookies.length; i++) { if (cookies[i].getName().equals("Nom")) Valeur = cookies[i].getValue(); } // ecriture de la reponse response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println(" "); out.println(" Mon Cookie "); out.println(" "); if (Valeur == null) { out.println("Création du cookie"); Cookie unCookie = new Cookie("Nom", "Montacié"); response.addCookie( unCookie ); } else out.println("Bonjour Monsieur " + Valeur); out.println(" "); testCookie.java

16 Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié JAVA SERVER PAGE 1.2 JAVA SERVER PAGE Principes et syntaxe Principes et syntaxe 1.2 JAVA SERVER PAGE 1.2 JAVA SERVER PAGE Principes et syntaxe Principes et syntaxe Code Java intégré dans une page HTML Traduction du code par le serveur J2EE en servlet (1er appel) Exécution par le moteur de servlet Communication avec les autres composants (servlets, EJB, …) Avantages / servlet simplicité d’écriture et de déploiement Inconvénients /servlet visibilité du code Java (.class pour les servlets) perte de la structuration (paquetage) Syntaxe (extrait) contient du code Java qui fera partie de la méthode principale de la page JSP la valeur de expression sera intégrée dans la page HTML à la place de la balise : définition d’une variable d’instance (persistance entre deux invocations) : définie une variable locale à la jsp (réinitialisée à chaque invocation) Objets pré-déclarés (out request response exception session application)

17 Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié JAVA SERVER PAGE 1.2 JAVA SERVER PAGE Interface ServletRequest – caractéristiques de la requête Interface ServletRequest – caractéristiques de la requête Calendar calendrier=Calendar.getInstance(); int heures=calendrier.get(Calendar.HOUR_OF_DAY); int minutes=calendrier.get(Calendar.MINUTE); int secondes=calendrier.get(Calendar.SECOND); %> Page JSP affichant l'heure Une page JSP générée dynamiquement Il est : : A chaque fois que vous rechargez la page, l'heure change Heure.jsp

18 Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié DEPLOIEMENT DE WEB ARCHIVE 1.3 DEPLOIEMENT DE WEB ARCHIVE Règles de construction Règles de construction testServletRequestNet cours11.testServletRequestNet testServletRequestNet /testServletRequestNet web.xml Archive compressé (jar) d’une arborescence Répertoire WEB-INF contenant deux répertoires (classes et [sources]) et web.xml paquetages des.class (classes) et paquetages des.java (sources) fichier de référencement des servlets pour le serveur J2EE(web.xml) fichiers.html et.jsp

19 Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié SERVICES D’APPLICATION 2. SERVICES D’APPLICATION Processus et composant métier Processus et composant métier Processus métier (ou procédure d’entreprise) Algorithme permettant de systématiser une suite de tâches dans le but d’atteindre certains des objectifs d’une entreprise vente : gestion commerciale, besoins du client, création d’une commande achat : politique d’achat et de concurrence veille : stratégique, concurrence, recherche d’informations … Composant métier Composant logiciel correspondant à l’implémention d’un processus métier Différentes granularités établissement d’une commande, consolidation d’un ensemble de commandes Architecture logicielle d’une application répartie Composant d’IHM (service de présentation) Composant métier (service d’application exécutant un processus métier) Modèle de gestion de donnée (définition et accès fiable aux données métier)

20 Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié COMPOSANTS TRANSACTIONNELS 2.1 COMPOSANTS TRANSACTIONNELS Accès fiable aux données Accès fiable aux données Propriétés ACID Propriétés essentielles d'un sous-système de traitement de transactions d'un système de gestion de base de données Transaction (ensemble de consultations et de modifications d’un base de données) Atomicité : Validation complète d’une transaction ou annulation de la transaction Cohérence : Interdiction et annulation d’une transactions incohérente avec le modèle des données Isolation : Pas d’interférence entre des transactions simultanées Durabilité : Pas de perte d’une transaction validée Composants transactionnels Composants métiers permettant la mise en œuvre de transactions respectant les propriétés ACID.

21 Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié COMPOSANTS TRANSACTIONNELS 2.1 COMPOSANTS TRANSACTIONNELS Entity Java Bean (EJB) Entity Java Bean (EJB) Composants transactionnels de J2EE 1998 version 1.0Lancement de Java Plateform Entreprise Edition (IBM, Sun) 2001 version 2.0Compatibilité Corba 2003 version 2.1Compatibilité Web Services (SOAP) Référence actuelle 2006 version 3.0 Simplification de la syntaxe Typologie des EJB Session Beans Composant implémentant une tâche client avec état (Stateful) ou sans état (stateless) Entity Beans Composant gérant des données persistantes Message-Driven Beans composant gérant et transportant des messages asynchrones

22 Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié COMPOSANTS TRANSACTIONNELS 2.1 COMPOSANTS TRANSACTIONNELS Architecture logicielle des EJB Architecture logicielle des EJB Interaction avec un Bean par l’intermédiaire de deux (ou quatres) interfaces Remote (services métiers) Ensemble de méthodes métiers fournies par le Bean Définit le comportement de l’objet distribué Proche d’un objet serveur RMI RemoteHome (gestion du cycle de vie) Allocation, destruction d’instances Recherche d’instance Seul élément du Bean enregistré dans le service de nommage (JNDI) Local et LocalHome pour les accès de client du même conteneur Amélioration des performances

23 Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié COMPOSANTS TRANSACTIONNELS 2.1 COMPOSANTS TRANSACTIONNELS Création automatique par le plugin Jope public class SessionEJB implements SessionBean { SessionContext ejbContext; public void setSessionContext(SessionContext ctx) {ejbContext = ctx;} public void ejbRemove() {} public void ejbCreate() throws CreateException {} public void ejbPassivate() {} public void ejbActivate() {} /** méthodes métiers */ public void method1() {System.out.println("It is method1 !!!");} public void method2(java.lang.String s) { System.out.println("It is method2 with parameter " + s);} } public interface SessionHome extends EJBHome { MonPremierEJB create() throws CreateException, RemoteException; } public interface Session extends EJBObject { public void method1() throws RemoteException; public void method2(java.lang.String s) throws RemoteException; } SessionEJB.java SessionHome.java Session.java

24 Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié DEPLOIEMENT D’EJB 2.2 DEPLOIEMENT D’EJB Règles de construction Règles de construction Archive compressé (jar) d’une arborescence Répertoires des paquetages de classes Répertoire META-INF contenant fichiers de description et de référencement ejb-jar.xml description des ejb X-ejb-jar.xml fichier de référencement dépendant du serveur J2EE String bName = "SessionHome"; try { home = (SessionHome) PortableRemoteObject.narrow(ctx.lookup(bName), MonPremierEJBHome.class); Session bean = home.create(); bean.method1(); } catch(Exception e) { e.printStackTrace(); System.exit(2); } SessionClient.java


Télécharger ppt "Masters IIGLI et ILGII – Intranet internet extranet – 2006-2007 – Claude Montacié 1 Cours n° 11 Services Web et plateforme J2EE."

Présentations similaires


Annonces Google