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

Slides:



Advertisements
Présentations similaires
Serveur d’applications JEE
Advertisements

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 1 Cours n° 8 Langage HTML.
Retour sur RMI.
Serveurs web pour JSP et Servlets
Architecture. Architecture Enjeux Les Enjeux Trouver une solution e-Business Accessible à partir d’un navigateur Web Accédant au système via un Portail.
Exposé de Système - Informatique et Réseau
Programmation Web Les JSP.
Cours 5.3 : XML et les architectures N-tiers – Tier Présentation
Cours 6 : XML et les architectures N-tiers – Tier Applicatif
Stéphane Frenot - Département Télécommunication - SID - II - EjbServ 227 EJB Session.

CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV EJB Entité Module Java Expert.
CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV EJB Session Module Java Expert.
UV JSP JSP : Java Server Page
UV Servlets Les Servlets
TP 3-4 BD21.
JSP Java Server Pages. Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java propose trois solutions.
Servlet JAVA.
Introduction aux services WEB
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Common Gateway Interface
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
Université de Versailles-Saint-Quentin
Etude des Technologies du Web services
XML-Family Web Services Description Language W.S.D.L.
JAVASERVER FACES Un framework Java pour le développement Web.
M2 – MIAGE/SID Servlet M2 – MIAGE/SID
SERVLETS PRESENTATION
Développement Web en J2EE (Servlet & JSP)
ASP.NET Par: Hugo St-Louis. C ARACTÉRISTIQUES A SP. NET Évolution, successeur plus flexible quASP (Active Server Pages). Pages web dynamiques permettant.
Servlets.
JSP (Java Server Pages)
Servlets. 2 H. Fauconnier M2-Internet Contenu dynamique Perl/cgi indépendant de la plateforme Extensions du serveur exemple ASP M2-Internet 3 H. Fauconnier.
1 CSI 2532 Lab6 Application Web et DB Février 27, 2012.
Michel Coletta - Journées PATTERNS Avril Grenoble1 STRUTS Introduction Technologies Java Architecture Développement Enseigner quoi ?
Document élaboré à Centrale Paris par Pascal Morenton LES TECHNOLOGIES DU WEB 1. LES PHASES D UN DEPLOIEMENT DE RESEAUX 2. LE LANGAGE HTML 3. LE LANGAGE.
Chapitre 3 Les bibliothèques de balises JSP et la JSTL
J2EE vs .NET Réaliser par : SEIF ENNACER BADRA && CHETOUI RIM.
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
L’architecture J2EE
M2 – MIAGE/SID Servlet M2 – MIAGE/SID
Utilisation avancée.
Les servlets Java Les bases de la génération dynamique HTML en Java Sébastien Limet etGérard Rozsavolgyi Licence Professionnelle
Module I-C3 : Applications Web IUT R&T 2e année
Les EJB Samir AZZOUZ Équipe ObjectWeb
Présentation de CORBA et de IIOP
1 Architecture orientée service SOA Architecture orientée service SOA (Service Oriented Architecture)
Java Enterprise Edition, anciennement J2EE
Outil de gestion des cartes grises
Chapitre 2 Développement Web avec les technologies JSP/Servlets
UV J2EE Module Java Expert
AngularJS.
Cours de programmation web
Créer des packages.
CEG3585/CEG3555 Tutorat 2 Hi ver 2013.
Enterprise Java Beans 3.0 Cours INF Bases de Données Hiver 2005, groupe 10 Stefan MARTINESCU.
Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 1 Cours n° 10 Accès distant aux bases de données.
Les sockets.
Struts.
 Formulaires HTML : traiter les entrées utilisateur
Initiation au JavaScript
1 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB ARCHITECTURE WEB – COURS III
Conférence Témoignages métiers- Supinfo Nantes  Création en 1979  CA de 150 Millions €  Présence nationale et internationale  2300 personnes en France.
M2 – MIAGE/SID Servlet et session M2 – MIAGE/SID
Les Servlets Présentation Cycle de vie Principe de fonctionnement
Les Java Server Pages Dans ce chapitre, nous allons :
IFT 6800 Atelier en Technologies d’information Chapitre 5 Introduction aux Servelets & JSP.
JAVA EE 5 Q.R. C’est quoi une servlets?
Parquet Geoffrey 3 ARIL EXIA.CESI ARRAS. Présentation du MLD Présentation de la persistance Présentation récapitulatif du projet JSP/SERVLET MVC Cycle.
Applications distribuées Introduction Jean-Jacques LE COZ.
Transcription de la présentation:

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

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

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

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)

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

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)

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)

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()

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

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

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.

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

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 <FORM ACTION=" METHOD=POST> Nom Prénom <INPUT TYPE=RESET VALUE="Remise à zéro"> } testServletRequestReq.html français null 28 application/x-www-form-urlencoded prenom:Claude nom:Montacié

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()

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

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)

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

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 <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" " 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

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)

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.

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

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

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

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