92
Olivier Perrin, Université de Lorraine LicencePro, 2014 Java Avancé LicencePro 2014 Olivier Perrin Université de Lorraine

Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

Olivier Perrin, Université de Lorraine LicencePro, 2014

Java Avancé

LicencePro 2014

Olivier PerrinUniversité de Lorraine

Page 2: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 3: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 4: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 5: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 6: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 7: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 8: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 9: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 10: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 11: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 12: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 13: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 14: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 15: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 16: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 17: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 18: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 19: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 20: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 21: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 22: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 23: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 24: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 25: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 26: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 27: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 28: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 29: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 30: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 31: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 32: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 33: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 34: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 35: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 36: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 37: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 38: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 39: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 40: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 41: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 42: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 43: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 44: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 45: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 46: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 47: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 48: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

Olivier Perrin, Université de Lorraine LicencePro, 2014

  Architectures Outils Java Servlets État servlet JSP Accès BD Conception

Glassfish

Ant/Maven

NetBeans

Les outils48

Page 49: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 50: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 51: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 52: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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) { ... } ... }

Page 53: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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>

Page 54: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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>

Page 55: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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;    } }

Page 56: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 57: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 58: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 59: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 60: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 61: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 62: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 63: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 64: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 65: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 66: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 67: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 68: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 69: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 70: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 71: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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:."%'$/';'#-,<+/":

Page 72: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 73: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 74: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 75: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 76: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 77: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 78: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 79: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 80: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 81: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 82: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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>

Page 83: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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>

Page 84: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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>

Page 85: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 86: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 87: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 88: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 89: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 90: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 91: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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

Page 92: Les pages des personnels du LORIA et du Centre Inria NGE - … · 2014-09-10 · ‣ Gestion de la mémoire pour les objets (GC) ‣ Contrôle des accès du code (Security Manager)

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