Java Avancé. LicencePro 2014. Olivier Perrin Université de Lorraine



Documents pareils
Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

Java pour le Web. Cours Java - F. Michel

DotNet. Plan. Les outils de développement

JOnAS 5. Serveur d application d

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

Les architectures 3-tiers Partie I : les applications WEB

Auto-évaluation Aperçu de l architecture Java EE

Web Tier : déploiement de servlets

Mise en œuvre des serveurs d application

Europa. Développement JEE 5. avec Eclipse. K a r i m D j a a f a r. A v e c l a c o n t r i b u t i o n d e O l i v i e r S a l v a t o r i

JOnAS Day 5.1. Outils de développements

10. Base de données et Web. OlivierCuré

Environnements de Développement

Introduction à la plateforme J2EE

Compte Rendu d intégration d application

J2EE - Introduction. Développement web - Java. Plan du chapitre

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

Module BD et sites WEB

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

Glassfish dans le milieu médical. Sun Aquarium Paris 26 Juin 2009 Jacky Renno

Cedric Dumoulin (C) The Java EE 7 Tutorial

Catalogue des Formations Techniques

Architectures web/bases de données

1. Installation d'un serveur d'application JBoss:

Application Web et J2EE

Jahia. Guillaume Monnette École Ingénieurs 2000 Marne-La-Vallée IR3

Architectures n-tiers et déploiement d applications Web

Notre Catalogue des Formations IT / 2015

Java Enterprise Edition

Hébergement de sites Web

INGÉNIEUR LOGICIEL JAVAEE / GROOVY 8 ANS D EXPÉRIENCE

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

Vulgarisation Java EE Java EE, c est quoi?

4. SERVICES WEB REST 46

Augmenter la disponibilité des applications JEE grâce au clustering : Le projet open source JShaft

Java et les bases de données

WEBSERVICES. Michael Fortier. Master Informatique 2ème année. A308, Université de Paris 13

2 Chapitre 1 Introduction

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

Urbanisation des SI. Des composants technologiques disponibles. Urbanisation des Systèmes d'information Henry Boccon Gibod 1

CAHIER DES CHARGES D IMPLANTATION

PRODUCTS LIST (updated 11th January 2010)

<Insert Picture Here> Maintenir le cap avec Oracle WebLogic Server

Ré-architecture et migration d une application standalone vers un serveur applicatif multi-tiers dans un contexte JAVA-SAP

Utilisation de Jakarta Tomcat

Urbanisme du Système d Information et EAI

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

JOnAS Day 5.1. Clustering

Introduction aux «Services Web»

Architectures d'intégration de données

IBM WebSphere Application Server 5.0 : Administration avancée

Comparaison des architectures J2EE et.net

IBM DB2 Alphablox. d administration GC

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»

Java Naming and Directory Interface

Apache Tomcat 6. Guide d'administration du serveur Java EE sous Windows et Linux. Résumé. Étienne LANGLET

Technologies du Web. Créer et héberger un site Web. Pierre Senellart. Page 1 / 26 Licence de droits d usage

Jean-Philippe VIOLET Solutions Architect

Windows (2000/NT), Solaris, AIX, HP-UX, Linux Haute disponibilité : SunCluster 3, Veritas Cluster Server 4. J2EE (JSP, Servlet, EJB, JTA), Open Source

A. Architecture du serveur Tomcat 6

Projet Java EE Approfondi

Expert technique J2EE

Virginie!SALAS Janvier!09! NFE107

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Programmation Web Avancée Introduction aux services Web

Urbanisation des Systèmes d'information

Open Source Job Scheduler. Installation(s)

Les nouvelles architectures des SI : Etat de l Art

Refonte front-office / back-office - Architecture & Conception -

Systèmes répartis. Fabrice Rossi Université Paris-IX Dauphine. Systèmes répartis p.1/49

NOVA BPM. «Première solution BPM intégr. Pierre Vignéras Bull R&D

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Architectures n-tiers Intergiciels à objets et services web

L art d ordonnancer. avec JobScheduler. François BAYART

Messagerie asynchrone et Services Web

Applications distribuées: le retour du client "riche"

Nouvelles Plateformes Technologiques

Quick Start Guide This guide is intended to get you started with Rational ClearCase or Rational ClearCase MultiSite.

SOAP Concepts Application à Glassfish

Youssef LYHYAOUI Ingénieur Java/J2EE, SOA, ESB, Web services 31 ans Statut : Indépendant SITUATION ACTUELLE

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

7 villa de la citadelle Né le 13 mai Arcueil Nationalité : Française. Développeur Web JEE COMPÉTENCES

Vulnérabilités et sécurisation des applications Web

Développement d applications Internet et réseaux avec LabVIEW. Alexandre STANURSKI National Instruments France

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC

Cours en ligne Développement Java pour le web

ADMINISTRATION DE ADOBE LIVECYCLE MOSAIC 9.5

Plan. Department of Informatics

Point sur les solutions de développement d apps pour les périphériques mobiles

TechSoftware Présentations

Grid Technology. ActiveMQ pour le grand collisionneur de hadrons (LHC) Lionel Cons Grid Technology Group Information Technology Department

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Olivier Deheurles Ingénieur conception et développement.net

La base de données XML exist. A. Belaïd

SOA Open Source Intégration des services et business process dans une architecture SOA Open Source. Bruno Georges JBoss, a Division of Red Hat

Programme scientifique Majeure ARCHITECTURE DES SYSTEMES D INFORMATION. Mentions Ingénierie des Systèmes d Information Business Intelligence

Création d une application JEE

Transcription:

Java Avancé LicencePro 2014 Olivier Perrin Université de Lorraine

Organisation 2 Objectifs du cours connaître les caractéristiques des applications Web maîtriser les concepts maîtriser une solution technique: Java EE maîtriser quelques patrons de conception Prérequis programmation Java Évaluation un examen écrit plus TPs/projet atelier Me contacter olivier.perrin@loria.fr

Plan 3 Applications Web et architectures n-tiers Outils Java et applications Web Servlets État d un servlet Les JSP Accès aux BD avec servlets Conception

Software-defined Applications on the Application Architecture Road Map Évolution des applications 4 UX User Experience BL T Business Logic Thing (Fit for Purpose Device) UX Svc. T Svc. Service Outer APIs UX Svc. UX Svc. Virtualization Boundary UX BL Data UX BL Data UX BL Data Service APIs BL Data Svc. Svc. Svc. Svc. Svc. Svc. Svc. Svc. Svc. Svc. Svc. Svc. Svc. Svc. Svc. Svc. Inner APIs BL Data Mono 2-Tier 3-Tier SOA 1970's 1980's 1990s 2000's Gartner, 2014 2014 Gartner, Inc. and/or its affiliates. All rights reserved. Web Scale SOA 2010's Software-defined SOA 2014+

Application Web: les besoins 5 Applications Web fonctions réparties entre plusieurs systèmes reposent sur les architectures n-tiers Chaque système contient une partie de l application les parties manquantes sont exécutées sur les autres systèmes les informations sont échangées sur le réseau 3 parties partie présentation partie applicative/orientée métier partie ressources

Application Web: les besoins (cont.) 6 Motivation pour les serveurs d application simplifier le développement séparer clairement les différentes couches se concentrer sur la logique de l application (le reste est pris en charge par la structure d accueil) obtenir des gains de productivité faciliter l intégration avec l existant optimiser la maintenance et la sécurité permettre la liberté de choix fournir une réponse adaptée à la demande

Application Web 7 Problèmes des applications réparties?

Application Web: problèmes 8 Hétérogénéité: os, navigateur Sécurité: authentification, autorisation, intégrité, confidentialité, non-répudiation Résilence: panne réseau, panne serveur, panne client Qualité de service: performances, passage à l échelle Concurrence: verrous, deadlock Transparence

Architectures n-tiers pour le Web 9 Quelle architecture?

Architecture 3-tiers classique 10 Tiers client Tiers du milieu Tiers ressource (EIS) Côté serveur

Architectures Web 11 Client Web Web services Clients lourds Tiers client Tiers Web Tiers du milieu Tiers ressource (EIS) Web services Côté serveur

Tiers client 12 Web browser HTTP ou HTTPS, HTML, XML PDA/téléphone/ HTTP ou HTTPS, WML, XML Client lourd, applications IIOP/RMI, CORBA JRMP/RMI Web service HTTP ou HTTPS, REST, SOAP (XML)

Architectures Web 13 Client Web Web services Clients lourds Tiers client Tiers Web Tiers du milieu Tiers ressource (EIS) Web services Côté serveur

Tiers Web: son rôle 14 Traite les requêtes HTTP et les réponses Sépare la présentation de la logique applicative Génère du contenu dynamiquement Transforme des requêtes HTTP dans un format compris par l application Contient la logique du flot de présentation Identifie la session de l utilisateur Supporte plusieurs types de clients

Tiers Web: son architecture 15 Client Web Web services Tiers client HTML, XML/HTTP, HTTPS SOAP/ HTTPS Web serveur Contenu statique CGI scripts Tiers Web Web container Web container Autres extensions SQL XML, RMI/ HTTP, IIOP, JMS SOAP/ HTTPS Tiers ressource (EIS) Tiers du milieu Web services Côté serveur

Tiers Web: les technologies utilisées 16 CGI (Common Gateway Interface) peut-être écrit en Java, C, C++, Perl, ASP (Active Server Pages) langage de script interprété dans les pages HTML Java Servlet nécessite un conteneur Java JSP (Java Server Pages) langage de script dans les pages HTML compilé en Servlet PHP, Python JavaScript (Server Side)

Architectures Web 17 Client Web Web services Clients lourds Tiers client Tiers Web Tiers du milieu Tiers ressource (EIS) Web services Côté serveur

Tiers du milieu: son rôle 18 Gestion de composants outils et services pour gérer les composants du système et la logique (session, notification synchrone/asynchrone) Tolérance aux pannes, disponibilité capacité à résister à une possible panne sans point unique de panne, 24/24, 7/7 Passage à l échelle capacité du système à accroître ses ressources matérielles pour supporter un nombre plus important d utilisateurs avec un temps de réponse constant Répartition de la charge capacité d envoyer une requête à différents serveurs en fonction de leur disponibilité

Tiers du milieu: son rôle 19 Pooling de ressources protège le tiers ressource en utilisant des groupes de connections partagées entre tous les clients Gestion des transactions intégrité des données, ACID (cf. SGBD) Console de gestion point unique de gestion permettant de contrôler l ensemble du système (tous les serveurs) Sécurité authentification autorisation

Serveurs: Web Information Servers 20 À la frontière du tiers Web et du tiers milieu Pas de transactions Serveurs sans état Utilisation de templates et de langage de script pour générer les pages HTML dynamiquement, tout en accédant le tiers ressources Exemples IIS + ASP (Microsoft) Web serveur + PHP, Python, CGI

Serveurs: Serveurs de composants 21 Permet l accès au tiers ressource Gère les transactions Serveur sans état Désormais disponibles au cœur des serveurs d applications Exemples Microsoft Transaction Server (MTS dans.net) Sybase Jaguar (dans Sybase EAServer) IBM Component Broker (dans WebSphere)

Serveurs: Serveurs d applications 22 Environnement complet de développement côté serveur Comprend toujours un serveur de composants Serveur avec états Supporte la logique métier (business logic) à l aide d objets, de règles et de composants Exemples JEE servers: JBoss, BEA WebLogic, IBM WebSphere Microsoft.NET Enterprise Servers ORB Corba Servers: Borland VisiBroker, IONA Orbacus

Architectures Web 23 Client Web Web services Clients lourds Tiers client Tiers Web Tiers du milieu Tiers ressource (EIS) Web services Côté serveur

Tiers ressource 24 EIS: Enterprise Information Systems Bases de données JPA, Hibernate, JDBC, ADO.NET Anciens systèmes (legacy) Java EE Connector, protocoles propriétaires ERP (Enterprise Resource Planning) Java EE Connector, protocoles propriétaires EAI (Enterprise Application Integration) Java EE Connector, protocoles propriétaires

Architecture n-tiers 25 Tiers client Tiers Web Tiers du milieu Tiers ressources

Principes de conception [Krakowiak06] 26 Principe directeur: séparation des préoccupations isoler les aspects indépendants et les traiter séparément examiner un problème à la fois éliminer les interférences évolution indépendante des solutions de chaque aspect Mise en œuvre encapsulation: séparer interface et réalisation (contrat commun) abstraction: décomposer en niveaux, cacher les détails non pertinents patrons de conception (patterns): principes généraux de conception

Plate-formes: deux mondes 27 Microsoft.NET Java Java EE

Microsoft DNA (Distributed internet Arch.) 28 Méthodologie, software pattern apporte une solution à un ensemble de problèmes rencontrés dans les applications distribuées Ensemble de technologies Microsoft pour implanter cette méthodologie Présentation: IE Moteur de rendu: IIS Rendu Business: ASP, VBScript Communication entre composants: COM, MSMQ, COM+ Composants: COM avec/sans MTS Business données: ActiveX Data Objects, ODBC Accès aux données: OLEDB, Universal Data Access (ADO) Persistance: SQL Server, Exchange, Active Directory, NTFS

Microsoft DNA Distributed Computing Rich client Presentation services Scripting WIN32 HTML 29 Business logic IIS MSMQ MTS Write business logic as COM components Thin client Data services Presentation services ADO OLE DB Application services DHTML Components Mainframe Directory RDBMS Email & messaging File system Distributed transactions and query processing across multiple data stores

Plate-forme Microsoft.NET 30.NET est une stratégie de produits MS Remplacement de Microsoft DNA Composée de 3 parties CLR (Common Language Runtime) BCL (Base Class Library) ASP.NET CLS (Common Language Specification) CTS (Common Type System) MSIL (Microsoft Intermediate Language)

CLR: Common Language Runtime 31 Moteur d exécution pour les applications du.net framework Équivalent d une JVM Gestion du code (chargement et exécution) Isolement de la mémoire par application Vérification des types Conversion du MSIL en code natif (pas d interprétation) Accès au méta-données Gestion de la mémoire pour les objets (GC) Contrôle des accès du code (Security Manager) Gestion des exceptions Interopération entre le code, les objets COM, les DLLs Outils développeur (profileur, debug, )

CTS/CLS/MSIL 32 Common Type System Système de types, construit dans CLR, qui supporte les types et opérations communs à beaucoup de langages de programmation Common Language Specification Ensemble de constructions et de contraintes qui sert de guide aux développeurs de bibliothèques et de compilateurs Sous-ensemble de CTS Microsoft Intermediate Language Ensemble d instructions indépendant du CPU dans lequel sont compilés les programmes.net Avant exécution, MSIL est converti en code natif

ASP.NET/WebForms 33 ASP.NET est une abstraction de HTTP 3 abstractions: context, handler, module pages compilées et exécutées dans le CLR modèle de développement basé sur les WebForms pour développer une interface graphique Web comme en VB sépare traitements et présentation le formulaire représente la page Web les traitements sont contenus dans une deuxième page appelée Code Behind cette page peut-être codée dans n importe quel langage du framework.net et implante les événements liés à cette page la page HTML finale qui sera générée au client intègre la présentation et le Code Behind en ciblant différents navigateurs

Architecture ASP.NET 34 HTTP Request GET /foo/foo.aspx HTTP Response HTTP/1.1 200 OK aspnet_wp.exe (ASP.NET Worker Process) aspnet_isapi.dll (ASP.NET ISAPI Extension) HttpHandler Page class INETINFO.EXE (IIS) Created from foo.aspx Compiled to Assembly with foo_aspx class

Microsoft ADO.NET 35 ADO modèle fortement couplé (mode connecté) défini pour le modèle relationnel (pas pour le modèle hiérarchique - XML) conception qui laisse à désirer plusieurs manières de faire la même chose un même objet possède plusieurs utilisations pas défini pour les applications réparties ADO.NET évolution de ADO ne partage pas le même modèle objet mais partage plusieurs paradigmes ou fonctionnalités

Microsoft ADO.NET (cont.) 36 ADO.NET collection de classes, interfaces, structures et types pour accéder à des données relationnelles dans.net la collection est organisée dans différentes bibliothèques Objectifs System.Data, System.Data.OleDB, System.Data.SqlClient, excellente conception gestion robuste du mode déconnecté support des modèles relationnel et hiérarchique accès aux données via HTTP maintien du lien à le modèle de programmation de ADO interopérabilité avec COM pour intégration dans.net

La plate-forme Java EE 7 37 Java EE 7 est une spécification (contrairement à.net) Une application Java EE 7 assemble des composants composants clients: HTML, applets composants Web: servlets et JSP composants business: EJB Les composants sont écrits en Java compilé en bytecode assemblés dans l application Java EE 7 déployés dans un serveur Java EE 7 Le serveur Java EE 7 fournit des conteneurs qui hébergent les composants

Architecture d un serveur Java EE 7 38 Firewall Client Tier Middle Tier EIS Tier

APIs de la plate-forme Java EE 7 39 Enterprise Java Beans technology 3.2 (EJB) Briques de base pour construire l application 3 types de Beans: session, entity, message-driven JDBC 4.1 API Permet l exécution de commandes SQL 2 parties dans l API la partie application pour accéder à la BD la partie fournisseur de services pour attacher le driver JDBC à la plateforme Java EE 6 Java Persistence API 2.1 (JPA) JEE 7: Interceptors 1.2 (logging, auditing),

APIs de la plate-forme Java EE 7 (cont.) 40 Java Servlets 3.1 introduit le modèle requête/réponse dans Java et étend la capacité d un serveur HTTP JavaServer Pages Technology (JSP) 2.3 fusionne HTML (XML) classique avec des constructions dynamiques à l aide de balises JSP Java Message Service (JMS) 2.0 introduit un modèle de messages entre composants (MOM: Message Oriented Middleware) permet des communications asynchrones, fiables, et indépendantes entre les composants

APIs de la plate-forme Java EE 7 (cont.) 41 Java Transaction API (JTA) 1.2 fournit les services nécessaires pour contrôler le niveau d isolation des transactions JavaMail Techonology 1.5 permet l envoi de mails API en 2 parties: partie application pour contrôler l envoi d emails, partie fournisseur de services emails JavaBeans Activation Framework (JAF) 1.1 service de découverte et d encapsulation de composants à l aide de JavaBeans

APIs de la plate-forme Java EE 7 (cont.) 42 Java Architecture for XML Binding (JAXB) 2.2 API standard pour accéder aux documents XML (DOM/SAX/ XSLT/TrAX) JEE Connector Architecture 1.7 permet la création d adaptateurs de ressources pour permettre l accès aux systèmes EIS Java Authorization Contract for Containers (JACC) 1.5 permet la gestion de la sécurité dans les applications Java EE

Comparaison Java EE /.NET 43 PDA Web browser Wireless Device Web browser Client Tier Business Partner or other system Web services technologies (SOAP, UDDI, WSDL, ebxml) Applets, Applications IIOP HTTP HTTP Firewall Client Tier Business Partner or other system Web services technologies (SOAP, UDDI, WSDL, BizTalk) Applications developed with Windows Forms IIOP HTTP HTTP Firewall Web Service Container Servlets EJBs JSPs Container Web Service Container ASP.NET.NET Managed Components Container Connectors Host Integration Server 2000 Proprietary protocol SQL Proprietary protocol Web services technologies (SOAP, UDDI, WSDL, ebxml) Proprietary protocol SQL Proprietary protocol Web services technologies (SOAP, UDDI, WSDL, BizTalk) Back-End Systems Context Repository Databases Existing System Legacy System ERP System Business Partner or other system Back-End Systems Passport.NET SQL Server 20000 Mainframe System Business Partner or other system

Comparaison du modèle de développement 44 Person.java Person.CPP (C++) JVM Person bytecode Deploy Linux CLR Person IL code Deploy Windows Address bytecode Company bytecode Deploy Windows Address IL code Company IL code Deploy Windows Deploy Address.vb (Visual Basic) Windows Deploy Address.java Company.java Solaris Company.cs (C#) Windows

Gestion des composants 45 Java EE.NET les transactions sont gérées en Java à l aide des APIs JTA/JTS l ensemble des composants s exécutent dans un seul et même environnement lui-même géré propose la même chose sous l appellation ServiceComponent le conteneur utilisé dans le framework est COM+ COM+ fonctionne dans un environnement non géré avec une gestion de type différente de celle de.net

Tableau comparatif 46.NET Java EE Différences Langage C#, multi-langages Java Partagent les mêmes caractéristiques. C# emprunte des concepts des composants JavaBeans et ajoute les marqueurs metadata. Java EE est plate-forme indépendant mais langage spécifique,.net est langage indépendant, mais plate-forme spécifique Services BCL Java Core API Similaires Présentation ASP.NET Servlet, JSP Interpréteur CLR JVM GUI Web Forms Swing ASP.NET utilise tous les langages supportés dans.net et est compilé en code natif par le CLR. JSP utilise le code Java, compilé en bytecode CLR permet à du code de plusieurs langages d utiliser un ensemble de composants partagés Composants Web similaires non dispo en Java. WinForms et WebForms intégrés à VisualStudio.NET Accès DB ADO.NET JDBC, JPA, ADO.NET est construit à partir d une architecture XML Web services oui oui Middleware oui oui.net Web services supposent un modèle de message basé sur SOAP, Java EE laisse le choix aux développeurs Technologie Produit Standard Java EE est une spécification,.net est une stratégie de produits

Plan 47 Architectures n-tiers et applications Web Outils Java et applications Web Servlets État d un servlet Les JSP Accès aux BD avec servlets Conception

Les outils 48 Glassfish Ant/Maven NetBeans

Glassfish 49 Glassfish est un serveur d application (AS) Objectifs implémentation de référence de Java EE 7 qualité utilisable en production performance open source licence CDDL support disponible communauté http://glassfish.java.net sources, liste de bugs, discussions documentation

Digression sur Java EE 6 50 JEE 5 est très puissant Mais trop de puissance peut nuire difficile de démarrer les applications simples nécessitent beaucoup de code Idée: garder la puissance, mais faciliter la vie du programmeur? C est l objectif de Java EE 6! annotations réduction ou élimination des Deployment Descriptors conservation des API classiques pour les utilisateurs avancés

Digression sur Java EE 6 (cont.) 51 Simplification du développement Programmation basée sur des POJO (vs. EJB) plus de liberté, moins de contraintes Utilisation d annotations ajout de propriétés moins de descripteurs de déploiement Injection de ressources (@Resource) Nouveaux frameworks (JSF 2.0), nouvelles APIs JAX-WS 2.2, Java Persistence, EJB 3.1, JAXB 2.2, JSP 2.2

Exemple: écrire un Servlet 52 En JEE 5 /* Code Java */ package licencepro; public class MonServlet extends HttpServlet { public void doget(httpservletrequest req,httpservletresponse res) {... }... } <!-- Deployment descriptor web.xml --> <web-app> <servlet> <servlet-name>monservlet</servlet-name> <servlet-class>licencepro.monservlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>monservlet</servlet-name> <url-pattern>/monapp/*</url-pattern> </servlet-mapping>... </web-app>

Exemple: écrire un Servlet 3.0 (cont.) 53 En JEE 6: annotation @WebServlet package licencepro; @WebServlet(name= MonServlet, urlpatterns={ /monapp/* }) public class MonServlet extends HttpServlet { public void doget(httpservletrequest req, HttpServletResponse res){... } <!--Deployment descriptor web.xml --> <web-app> <servlet> <servlet-name>monservlet</servlet-name> <servlet-class> licencepro.monservlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>monservlet</servlet-name> <url-pattern>/monapp/*</url-pattern> </servlet-mapping>... </web-app>

Exemple: écrire un service Web 54 Avant (J2EE 1.4 + JAX-RPC) package endpoint; import java.rmi.*; public class HelloServiceImpl!!! implements HelloServiceSEI { public String sayhello(string param)!!! throws java.rmi.remoteexception { return Hello + param; } } package endpoint; import java.rmi.*; public interface HelloServiceSEI!!! extends java.rmi.remote { public String sayhello(string param) throws java.rmi.remoteexception; } <?xml version='1.0' encoding='utf-8'?> <webservices xmlns='http://java.sun.com/xml/ns/j2ee' version='1.1'> <webservice-description> <webservice-description-name> HelloService</webservice-description-name> <wsdl-file> WEB-INF/wsdl/HelloService.wsdl</wsdl-file> <jaxrpc-mapping-file> WEB-INF/HelloService-mapping.xml </jaxrpc-mapping-file> <port-component xmlns:wsdl-port_ns='urn:helloservice/wsdl'> <port-component-name>helloservice</port-component-name> <wsdl-port>wsdl-port_ns:helloserviceseiport</wsdl-port> <service-endpoint-interface> endpoint.helloservicesei</service-endpoint-interface> <service-impl-bean> <servlet-link>wsservlet_helloservice</servlet-link> </service-impl-bean> </port-component> </webservice-description> </webservices> <?xml version='1.0' encoding='utf-8'?> <configuration xmlns='http://java.sun.com/xml/ns/jax-rpc/ri/config'> <service name='helloservice' targetnamespace='urn:helloservice/wsdl' typenamespace='urn:helloservice/types' packagename='endpoint'> <interface name='endpoint.helloservicesei' servantname='endpoint.helloserviceimpl'> </interface> </service> </configuration>

Exemple: écrire un service Web (cont.) 55 Maintenant (Java EE 7 + JAX-WS 2) import javax.jws.webservice; @WebService() public class MySimpleWS { public String sayhello(string s) { return Hello + s; } } Simple, non!

JavaEE 7 56 Tout ce qui est bien dans JEE 6, plus: HTML 5 productivité des développeurs répondre à la demande des entreprises

Glassfish: motivations 57 Support de Java EE 7: encourager une adoption rapide Serveur d application prêt à être utilisé en production Open source, accès simplifié Qualité: pas d excuse du genre «c est de l open source» Performance Outillage

Glassfish: fonctionnalités offertes 58 Tiers Web (JSP/Servlet) Services Web/XML (JAXB, JAX-WS, StAX) Applications Web 2.0 (AJAX, Java Web Start) Java Persistence API (JPA) Interopérabilité avec.net (WSIT) + Nombreux outils autour de Glassfish

Glassfish: caractéristiques 59 Performance Équilibrage de charge (load balancing) Disponibilité (high availability) Gestion dynamique de clusters Hôtes virtuels Support tier Web, services Web, Web 2.0 Mises à jour (specs, bugs, update center, )

Performance 60 Amélioration dans tous les domaines Démarrage ultra rapide dans GF v4 on démarre le plus petit possible (OSGi) Grizzly/JSP performances x 10 JAX-WS bien plus rapide qu Axis 2 GF v4 est encore plus rapide que GF v3!

!"#$%&'()*(+$"#, -.'//01/%*234567*89:*;/9*3<1/8 Architectures Outils Java Servlets État servlet JSP Accès BD Conception Performance (cont.) 61

Clustering 62 Stratégie utilisée pour le passage à l échelle une meilleure disponibilité une meilleure sûreté de fonctionnement

Architectures Outils Java Servlets État servlet JSP Accès BD Conception 63 Architecture: vue générale Node Agent Client Web Client Service Web Load Balancer (re)start http Server Instance http Admin Web Domain Administration Server (DAS) JMX Connector JMX tor onnec JMX C (re)start Con nec tor Server Instance Applications ASAdmin CLI NetBeans Node Agent Ressources Configuration Nœud Administration cluster1 cluster2

Architecture 64 Domain fournit un point d entrée pour une collection de server instances Server Instance moteur d exécution qui gère les requêtes d une application chaque instance possède un nom unique dans le domaine Application un domaine héberge un ensemble d applications Java EE 7 (war, ear, ejb-jar) Resource les applications Java EE 7 utilisent des ressources (jdbc, javamail, connecteurs vers EIS )

Architecture (cont.) 65 Cluster ensemble de server instances pour gérer le passage à l échelle un cluster appartient à un et un seul seul domain transparent pour les clients de l application chaque instance dans le cluster héberge le même ensemble de services/applications (homogénéité) une server instance appartient à au plus 1 cluster Node Agent responsable de la création, du démarrage, de l arrêt et de la suppression des server instances surveillance et relance des server instances en échec

Architecture (cont.) 66 Domain Administration Server (DAS) point central pour l administration d un domaine server instance Java EE 7 supporte administration via CLI, GUI, NetBeans IDE Load Balancer (répartiteur de charge) responsable de la redirection des requêtes vers l hôte le moins chargé connait les nœuds en échec, les sessions en cours

Gestion des clusters 67 Infrastructure et interfaces d administration pour créer et gérer les clusters appartenant à un domaine les instances dans chaque cluster les nœuds agent qui gèrent les instances dans un domaine le déploiement des applications et ressources d un cluster Informations dynamiques sur l état d un cluster Shoal Dynamic Clustering composants de Glassfish peuvent déclencher des actions en fonction des événements des clusters communication avec/entre clusters

Hôtes virtuels 68 Possibilité de faire fonctionner plusieurs sites Web (domaines) à partir d un serveur unique avec une adresse IP unique http://www.mondomaine.fr/ http://www.unautredomaine.fr/ Chaque site est identifié par son nom de domaine Les requêtes HTTP sont dirigées vers le domaine approprié en fonction du nom de domaine dans l URL Le DNS doit être configuré de manière à pouvoir faire le lien entre les domaines hébergés et l adresse IP du serveur

Disponibilité 69 Sûreté de fonctionnement Réplication quoi? sessions HTTP stateful session beans état des containers (timers ) comment? soit réplication en mémoire avec JXTA: performance, config. facile soit grâce à HADB - High Availability DB: disponibilité 99,99%, légère dégradation des perfs couplage faible entre HADB et les instances des serveurs Facilité d ajouter/retirer une application dans un cluster

High Availability DB 70 HADB fournit une disponibilité élevée pour HTTP session state stateful EJB session state HADB permet 5x9 plus complexe à administrer pas encore open source alternative: réplication en mémoire

Réplication en mémoire 71 Topologie de clusters pour les sessions!"#$%&'(")*+,-.+$/ 012&3#"(4"5$6+,(0727"781!"#$%&'(")*+,-.+$/ 012&3#"(4"5$6+,(0727"781 01-#)*"2'!-1+#+3"' 45-+*-6+*+.&'$/'7'/$8"',*9:."%'$/';'#-,<+/":././!"#$$%&$'()*+,*&+-(!"#$$%&$'()*+,*&+-( On maximise la disponibilité sur 4 nœuds et sur 2 machines

Réplication en mémoire 72 Configuration simplifiée créer un domaine utiliser le profil admin cluster (la réplication est alors gérée en standard) activer GMS (Group Management Service) persitence-type = replicated créer un cluster et ses instances déployer l application avec availability-enabled = true et c est tout!

Réplication en mémoire!"#$%&'(")*+,-.+$/'0"%1$%#-/," Coût de la réplication 01$2(13(,+4"&5#2&16 @&2$AB+5(C;?D.=E(2',1FG'4F2(H+G,#H#2&16 ;::: 73 /:: 9::?:: >:: =:: 8:: I1(,+4"&5#2&16,+4"&5#2&16 @JKL <::.:: ;:: :.7($+$$&16 87($+$$&16 97($+$$&16./!"#$$%&$'()*+,*&+-(

Déploiement 74 Serveur unique prêt à l emploi moteur Java EE avec tous les outils excellent support du tier Web performances (démarrage, mémoire, ) orienté développeur (profils pour changer en fonction du rôle) Un domaine peut être clusterisé prêt pour déploiement en entreprise gestion de la disponibilité BD les clusters peuvent être sur plusieurs machines gestion de l équilibrage de charge administration simple

Administration 75 Centralisée, sécurisée, distante (remote) accès grâce à de nombreuses interfaces (GUI, CLI, IDE, programme Java ) JMX ou Application Server Management extensions - AMX Adaptée à des besoins complexes scripts automatisation via des tâches ANT Surveillance jconsole ou autres niveau de surveillance choisi par service consommation des ressources

Outils!"#$%&'()*+,)-.+)#/*'0'1#/+,)-.+#,* 76 J##)+ NetBeans 8.x "#$%#&'(!)*)+!,*- ;-+'"-<0'-#1+ /0123*4*2/5+'%62 7/289:! 3@#++2U J6*:/#M'23?K/2N 3*4*2??2CD2E2/;F 22H%'@%*1+I D;?!"#$%&' ()*++,-+../012(#!30451' G#6601-'-%+ ;%"<5 AB!#"'*)2/%"4%" ="*&)%2#&O$ @?72P%<Q#R-&2ST A*4%12C%> =>%12?/@ K+%"+2*1L2='.%"2("#0>+ /*-),-1?"-&++#1

Ant 77 Projet Open Source permettant de construire et déployer des applications Web Principe permet l enchaînement d exécutables (Ant-Task) à partir de descriptions de dépendances l enchaînement est appelé une cible (target) une cible peut être exécutée, ou être chaînée à une autre cible si on exécute une cible qui dépend d autres cibles, Ant va récursivement exécuter les autres cibles automatiquement

Ant: un projet 78 La description du projet (target) et des opérations pour le construire (tasks) se trouvent dans build.xml Build.xml contient les directives de construction et de déploiement codée en XML compilation construction des JAR, WAR, EAR déploiement dans le serveur d application exécution des tests (éventuellement) destruction des fichiers intermédiaires

Ant: les properties 79 Permettent de définir des constantes utilisables dans le fichier build.xml <property name= xx value= yy /> Exemples <property name= project value= exemple /> <property name= build location= build /> <property name= classes location= ${build}/ classes /> <property name= src location= src />

Ant: les targets 80 Cible indiquant des commandes à exécuter <target name= A /> <target name= B depends= A /> <target name= C depends= B /> <target name= D depends= C, B, A /> ant B va exécuter A puis B ant D va exécuter A, B, C puis D

Ant: les tâches 81 Une tâche est un bout de code à exécuter <name attr1= value1 attr2= value2 /> Il existe des tâches prédéfinies et des tâches optionnelles <mkdir dir= ${classes} /> <javac srcdir= ${src} destdir= ${classes}/>

Ant: les références 82 Il est possible de nommer des éléments et d y faire référence (attributs id et refid) <project... > <path id="project.class.path"> <pathelement location="lib/"/> <pathelement path="${java.class.path}/"/> <pathelement path="${additional.path}"/> </path> <target... > <rmic...> <classpath refid="project.class.path"/> </rmic> </target> <target... > <javac...> <classpath refid="project.class.path"/> </javac> </target> </project>

Ant: les structures de chemin 83 Des structures de chemin peuvent être construites <classpath> <pathelement path="${classpath}"/> <pathelement location="lib/helper.jar"/> </classpath> Un ensemble de fichiers peut être défini avec fileset <fileset dir="lib"> <include name="**/*.jar"/> </fileset> Il peut ensuite être utilisé dans un classpath <classpath> <pathelement path="${classpath}"/> <pathelement location="lib/helper.jar"/> <fileset dir="lib"> <include name="**/*.jar"/> </fileset> </classpath>

Ant: un exemple 84 <project name="myproject" default="dist" basedir="."> <description> simple example build file </description> <!-- set global properties for this build --> <property name="src" location="src"/> <property name="build" location="build"/> <property name="dist" location="dist"/> <target name="init"> <tstamp/> <mkdir dir="${build}"/> </target> <target name="compile" depends="init" description="compilation"> <!-- Compile the java code from ${src} into ${build} --> <javac srcdir="${src}" destdir="${build}"/> </target> <target name="dist" depends="compile" description="generate the distribution">! <!-- Create the distribution directory --> <mkdir dir="${dist}/lib"/> <jar jarfile="${dist}/lib/project.jar" basedir="${build}"/> </target> <target name="clean" description="clean up" >! <!-- Delete the ${build} and ${dist} directory trees --> <delete dir="${build}"/> <delete dir="${dist}"/> </target> </project>