Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
Olivier Perrin, Université de Lorraine LicencePro, 2014
Java Avancé
LicencePro 2014
Olivier PerrinUniversité de Lorraine
Olivier Perrin, Université de Lorraine LicencePro, 2014
Organisation
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‣ [email protected]
2
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
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
Plan3
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Évolution des applications
© Gartner, 2014
4
© 2014 Gartner, Inc. and/or its affiliates. All rights reserved.
Software-defined Applications on the Application Architecture Road Map
UX
BL
User Experience
Business Logic
Thing (Fit for Purpose Device)
Mono
UX
BL
Data
2-Tier
Data
UX
BL
3-Tier
Data
BL
UX
SOA
Data
BL
Service APIs
UX Svc.
Svc. Service
1970's 1980's 1990s 2000's
T
Web Scale SOA
Svc.
Svc.
Svc.
Svc. Svc. Svc.
Svc.
Svc.
Svc.
Svc.
Svc.
Svc.
Svc.
Svc.
Svc.
Svc.
2010's
UX Svc.
Software-defined SOA
Outer APIs
UX T Svc.
2014+
Inner APIs
Data
BL
Virtualization Boundary
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Application Web: les besoins
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
5
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Application Web: les besoins (cont.)
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
6
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Application Web
Problèmes des applications réparties ?
7
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Application Web: problèmes
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
8
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Quelle architecture ?
Architectures n-tiers pour le Web9
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Côté serveur
Tiersclient
Tiersdu milieu
Tiersressource
(EIS)
Architecture 3-tiers classique10
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
TiersWeb
Tiersdu milieu
Côté serveur
ClientWeb
Webservices
Clientslourds
Tiers client
Tiersressource
(EIS)
Webservices
Architectures Web11
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
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)
Tiers client12
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
TiersWeb
Tiersdu milieu
Côté serveur
ClientWeb
Webservices
Clientslourds
Tiers client
Tiersressource
(EIS)
Webservices
Architectures Web13
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
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 rôle14
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Côté serveur
ClientWeb
Webservices
Tiers client
Tiers Web
Tiersressource
(EIS)
Webservices
Tiers dumilieu
Webserveur
Webcontainer
Webcontainer
AutresextensionsCGI
scriptsContenustatique SOAP/
HTTPS
SQL
XML,RMI/
HTTP,IIOP,JMS
SOAP/HTTPS
HTML,XML/HTTP,
HTTPS
Tiers Web: son architecture15
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
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)
Tiers Web: les technologies utilisées16
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
TiersWeb
Tiersdu milieu
Côté serveur
ClientWeb
Webservices
Clientslourds
Tiers client
Tiersressource
(EIS)
Webservices
Architectures Web17
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
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ôle18
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
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
Tiers du milieu: son rôle19
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
À 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: Web Information Servers20
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
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 de composants21
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
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
Serveurs: Serveurs d’applications22
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
TiersWeb
Tiersdu milieu
Côté serveur
ClientWeb
Webservices
Clientslourds
Tiers client
Tiersressource
(EIS)
Webservices
Architectures Web23
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
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
Tiers ressource24
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Architecture n-tiers25
Tiers client Tiers Web Tiers dumilieu
Tiersressources
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Principes de conception [Krakowiak06]
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
26
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Microsoft‣ .NET
Java‣ Java EE
Plate-formes: deux mondes27
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
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 interNet Arch.)28
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Distributed Computing Presentation services
Thin client
Rich client
HTML
Scripting WIN32
ComponentsDHTML
Write business logic as COM components
IISMSMQ
MTS
Business logic
Data servicesPresentation
services
Applicationservices
ADO
OLE DB Distributed transactions and query processing acrossmultiple data stores
Mainframe
Directory
RDBMS
Email & messaging
File system
Microsoft DNA29
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
.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)
Plate-forme Microsoft .NET30
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
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,…)
CLR: Common Language Runtime31
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
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
CTS/CLS/MSIL32
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
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
ASP.NET/WebForms33
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Architecture ASP.NET 34
GET /foo/foo.aspx HTTP/1.1 200 OK…
HTTP Request HTTP Response
Assembly withfoo_aspx
class
foo.aspx
INETINFO.EXE
(IIS)
aspnet_isapi.dll
(ASP.NET ISAPI
Extension)
aspnet_wp.exe
(ASP.NET Worker Process)
Page
class
Compiled to
Cre
ate
d f
rom
HttpHandler
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Microsoft ADO.NET
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
35
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Microsoft ADO.NET (cont.)
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
• System.Data, System.Data.OleDB, System.Data.SqlClient,…
Objectifs‣ 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
36
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
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
La plate-forme Java EE 737
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Firewall
Client Tier Middle Tier EIS Tier
Architecture d’un serveur Java EE 738
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
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 plate-forme Java EE 6
Java Persistence API 2.1 (JPA)
JEE 7: Interceptors 1.2 (logging, auditing),…
APIs de la plate-forme Java EE 739
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
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.)40
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
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.)41
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
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
APIs de la plate-forme Java EE 7 (cont.)42
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Comparaison Java EE / .NET43
Applets,Applications
Business Partneror other system
Servlets
Existing SystemLegacy System
ERP System
BusinessPartner
or other system
JSPs
EJBs
Connectors
Web services technologies(SOAP, UDDI, WSDL, ebXML)
IIOP HTTP HTTP
Proprietaryprotocol
SQLWeb services technologies
(SOAP, UDDI, WSDL, ebXML)
PDA Web browser
ClientTier
WebService
Container
Back-EndSystems
Databases
ContextRepository
Proprietaryprotocol
Co
nta
iner
Firewall
Applicationsdeveloped withWindows Forms
Business Partneror other system
MainframeSystem
BusinessPartner
or other system
ASP.NET
.NET Managed Components
Host IntegrationServer 2000
IIOP HTTP HTTP
Proprietaryprotocol
SQLWeb services technologies
(SOAP, UDDI, WSDL, BizTalk)
WirelessDevice
Web browser
ClientTier
WebService
Container
Back-EndSystems
SQL Server 20000
Passport.NET
Proprietaryprotocol
Web services technologies(SOAP, UDDI, WSDL, BizTalk)
Co
nta
ine
r
Firewall
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Person.java
Address.java
Company.java
JVM
CompanybytecodeAddress
bytecode
Personbytecode
Linux
Windows
Solaris
Deploy
Deploy
Deploy
Person.CPP(C++)
Address.vb(Visual Basic)
Company.cs(C#)
CLR
Company ILcodeAddress IL
code
Person ILcode
Windows
Deploy
Deploy
Deploy
Windows
Windows
Windows
Comparaison du modèle de développement44
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Java EE‣ 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é
.NET ‣ 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
Gestion des composants45
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
.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, JSPASP.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
Interpréteur CLR JVM CLR permet à du code de plusieurs langages d’utiliser un ensemble de composants partagés
GUI Web Forms Swing 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 .NET Web services supposent un modèle de message basé sur
SOAP, Java EE laisse le choix aux développeurs
Middleware oui oui
Technologie Produit Standard Java EE est une spécification, .NET est une stratégie de produits
Tableau comparatif46
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
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
Plan47
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Glassfish
Ant/Maven
NetBeans
Les outils48
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Glassfish
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
49
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Digression sur Java EE 6
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
50
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Digression sur Java EE 6 (cont.)
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…
51
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
En JEE 5
Exemple: écrire un Servlet52
<!-- 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>
/* Code Java */package licencepro; public class MonServlet extends HttpServlet { public void doGet(HttpServletRequest req,HttpServletResponse res) { ... } ... }
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
En JEE 6: annotation @WebServlet
Exemple: écrire un Servlet 3.0 (cont.)53
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>
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Exemple: écrire un service Web
Avant (J2EE 1.4 + JAX-RPC)
54
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>
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Exemple: écrire un service Web (cont.)
Maintenant (Java EE 7 + JAX-WS 2)
Simple, non !
55
import javax.jws.WebService;
@WebService() public class MySimpleWS { public String sayHello(String s) { return “Hello “ + s; } }
public class MySimpleWS { public String sayHello(String s) { return “Hello “ + s; } }
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
JavaEE 7
Tout ce qui est bien dans JEE 6, plus:
‣ HTML 5
‣ productivité des développeurs
‣ répondre à la demande des entreprises
56
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Glassfish: motivations
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
57
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Glassfish: fonctionnalités offertes
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
58
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Glassfish: caractéristiques
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,…)
59
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Performance
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 !
60
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Performance (cont.)61
!"#$%&'()*(+$"#,
-.'//01/%*234567*89:*;/9*3<1/8
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Stratégie utilisée pour‣ le passage à l’échelle‣ une meilleure disponibilité‣ une meilleure sûreté de fonctionnement
Clustering62
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Architecture: vue générale63
Nœud Administration
Applications
Ressources
DomainAdministration
Server(DAS)
Configuration
Load
Bal
ance
r
Node Agent
Server Instance
Server Instance
Node Agent
ClientService Web
http
ASAdmin CLINetBeans
Client Web
JMX Connector
(re)start
(re)start
httpJMX Connector
JMX Connector
cluster1 cluster2
Admin Web
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Architecture
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…)
64
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Architecture (cont.)
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
65
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Architecture (cont.)
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…
66
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Gestion des clusters
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
67
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Hôtes virtuels
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
68
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Disponibilité
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
69
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
High Availability DB
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
70
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Réplication en mémoire
Topologie de clusters pour les sessions
On maximise la disponibilité sur 4 nœuds et sur 2 machines
71
!"#$$%&$'()*+,*&+-(./
012&3#"(4"5$6+,(0727"781!"#$%&'(")*+,-.+$/
!"#$$%&$'()*+,*&+-(./
012&3#"(4"5$6+,(0727"781!"#$%&'(")*+,-.+$/
01-#)*"2'!-1+#+3"'
45-+*-6+*+.&'$/'7'/$8"'
,*9:."%'$/';'#-,<+/":
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Réplication en mémoire
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 !
72
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Réplication en mémoire
Coût de la réplication
73
!"#$$%&$'()*+,*&+-(./
01$2(13(,+4"&5#2&16!"#$%&'(")*+,-.+$/'0"%1$%#-/,"
.7($+$$&16 87($+$$&16 97($+$$&16:
;::
.::
<::
8::
=::
>::
?::
9::
/::
;:::
@&2$AB+5(C;?D.=E(2',1FG'4F2(H+G,#H#2&16
I1(,+4"&5#2&16
,+4"&5#2&16
@JKL
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Déploiement
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
74
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Administration
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
75
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Outils76
!"#$%&'()*+,)-.+)#/*'0'1#/+,)-.+#,*
!"#$%&'()*++,-+.
/0123*4*2/5+'%627/289:!
;%"<5
=>%12?/@
!#"'*)2/%"4%"
AB
;-+'"-<0'-#1+
A*4%12C%>
3*4*2??2CD2E2/;F G#6601-'-%+22H%'@%*1+ID;?
"#$%#&'(!)*)+!,*-J##)+
./012(#!30451'
K+%"+2*1L2='.%"2("#0>+
J6*:/#M'23?K/2N
="*&)%2#&O$
@?72P%<Q#R-&2ST
3@#++2U
/*-),-1?"-&++#1
NetBeans 8.x
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Ant
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
77
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Ant: un projet
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‣ …
78
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Ant: les properties
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”/>
79
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Ant: les targets
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
80
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Ant: les tâches
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}/>
81
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Ant: les références
Il est possible de nommer des éléments et d’y faire référence (attributs id et refid)
82
<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>
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Ant: les structures de chemin
Des structures de chemin peuvent être construites
Un ensemble de fichiers peut être défini avec fileset
Il peut ensuite être utilisé dans un classpath
83
<classpath> <pathelement path="${classpath}"/> <pathelement location="lib/helper.jar"/> </classpath>
<fileset dir="lib"> <include name="**/*.jar"/> </fileset>
<classpath> <pathelement path="${classpath}"/> <pathelement location="lib/helper.jar"/> <fileset dir="lib"> <include name="**/*.jar"/> </fileset> </classpath>
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Ant: un exemple84
<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>
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Ant: le fichier build.xml
La target par défaut effectue‣ la compilation‣ la construction du fichier .war‣ son déploiement dans Glassfish
Il suffit de changer le répertoire de Glassfish pour l’adapter
Puis, il faut appeler Ant
85
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Ant: le fichier build.xml (cont.)
Contient les directives de compilation et de déploiement d’une application Web
Les targets principales sont‣ Init: initialisation des variables et des répertoires du projet‣ Compile: compilation des sources Java‣ Clean: nettoyage‣ Javadoc: pour générer la doc‣ Dist: pour générer une tarball‣ War: pour générer le fichier d’archive‣ Deploy: pour déployer l’application dans Glassfish
Penser à l’adapter à votre propre application
86
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Ant: application à une application Web
Il faut définir une arborescence de répertoires‣ tout ce qui est construit est placé dans un répertoire build
87
project build.xml -- fichier pour ant lib -- les libs externes utilisées par le projet src -- les sources java organisés en packages web -- les fichiers html et JSP conf -- les fichiers de configuration et de propriétés web.xml build -- le répertoire dans lequel tout est généré test -- pour les applis de test
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Maven
La fondation Apache propose un nouvel outil
Maven 3‣ version 3.2.3 disponible
Avantages‣ plus rapide‣ options prédéfinies: compile, test, install‣ meilleure gestion de projet‣ entièrement écrit en Java‣ meilleure gestion du répertoire
88
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
NetBeans
Environnement complet de développement pour Java EE 7
‣ tier Web‣ Java Persistence API‣ services Web‣ EJB 3.2‣ Java EE 7 SDK
Facilité d’utilisation‣ notion de projet basée sur Ant/Maven‣ Glassfish, Tomcat, WildFly, JBoss, WebLogic, ...
89
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
NetBeans: applications Web
Java EE 7: JSP/Servlet, JSF,…‣ injection de ressources dans les applis Web (@DataSource)
Éditeur avancé de JSP‣ complétion de code pour JSP, JSF, JSTL, tagLib‣ documentation intégrée‣ complétion de code EL
Moniteur HTTP
Palette DnD de composants (JSF, HTML, DB…)
Frameworks: Struts, JSF… mais aussi Rails, Grails,…
90
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
NetBeans: services Web
JAX-WS, JAX-RS, JAXB
Wizards‣ WS, clients, handlers, opérations‣ à partir de classes Java annotées‣ à partir de code WSDL ou de XML schema
Éditeur‣ utilisation de clients WS appartenant à d’autres projets‣ DnD pour les opérations des services Web‣ complétion pour les annotations
Intégration du test grâce à Glassfish
Invocation asynchrone de services Web
91
Olivier Perrin, Université de Lorraine LicencePro, 2014
Architectures Outils Java Servlets État servlet JSP Accès BD Conception
Eclipse
Éditeur, compilateur, deboggueur, conception,…
Disponible sur www.eclipse.org, 80Mb
Notion de workspace‣ créer un workspace à un endroit bien précis, par celui par
défaut‣ wizards
Intégration de Glassfish et Ant/Maven dans un projet Eclipse
‣ Ant/Maven est disponible‣ Glassfish
92