La plate-forme J2EE - Master Informatique 2ème année

Transcription

La plate-forme J2EE - Master Informatique 2ème année
La plate-forme J2EE
Master Informatique 2ème année
Olivier Flauzac
[email protected]
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
1 / 64
Plan
1
Java ?
2
Architecture des applications
3
La plate-forme J2EE
4
Environnement d’exécution
5
JDBC
6
Servlet
7
JSP
8
EJB
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
2 / 64
Plan
1
Java ?
2
Architecture des applications
3
La plate-forme J2EE
4
Environnement d’exécution
5
JDBC
6
Servlet
7
JSP
8
EJB
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
3 / 64
J2SE
Standard Edition
élément de base
vaste API
quelques services
RMI
JDBC
Corba
pour les postes client ou les application réseau légère
permet le développement de client lourds
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
4 / 64
J2ME
Micro Edition
Java allégé
possibilité de supprimer des composants non utilisés
mise en place de composants de configuration spécifique
gestion native de la plate-forme
terminaux portables
téléphones
PDA
versions spécifiques en fonction des besoins :
liaison sans fil (WIFI, Bluetooth)
gestion de l’énergie
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
5 / 64
J2EE
Entreprise Edition
API spécifique d’entreprise
serveur d’application
gestion de l’intégration
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
6 / 64
Plan
1
Java ?
2
Architecture des applications
3
La plate-forme J2EE
4
Environnement d’exécution
5
JDBC
6
Servlet
7
JSP
8
EJB
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
7 / 64
Architecture
Différentes architectures
définition de la localisation des traitements
définition de la localisation des données
définition de la localisation résultats
Impact
performance de l’application
gestion des différents éléments
déploiement et maintenance de l’application
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
8 / 64
Architecture à 2 niveaux
Deux acteurs
client : gestion du traitement
serveur : gestion des données
Problèmes
maintenance complexe
performances dépendantes de la puissance du client
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
9 / 64
Architecture à 3 niveaux
Acteurs
présentation : interface utilisateur
métier : logique métier (applicative)
données : BdD , XML , LDAP ...
Avantages
facile à déployer
code applicatif modifiable indépendamment
puissance déléguée à la couche métier
Inconvénient
évolution difficile
composants de grande taille
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
10 / 64
Architecture à 3 niveaux
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
11 / 64
Architecture à multi-niveau
Acteurs
interface utilisateur : interactions entre l’utilisateur et l’application
logique de présentation : mise en forme des affichages, mise en
forme du traitement des requêtes
logique métier : code spécifique à l’entreprise
service d’infrastructure : fonctionnalités spécifiques (transaction,
connexion ...)
données
Modèle J2EE
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
12 / 64
Architecture multi-niveau
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
13 / 64
Architecture multi-niveau
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
14 / 64
Plan
1
Java ?
2
Architecture des applications
3
La plate-forme J2EE
4
Environnement d’exécution
5
JDBC
6
Servlet
7
JSP
8
EJB
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
15 / 64
La plate-forme J2EE
Principe
norme de spécification
d’infrastructure
de gestion d’applications
d’API
Environnement J2EE
infrastructure d’exécution
ensemble de services accessibles
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
16 / 64
API J2EE
JNDI
Java Naming and Directory Interface
API d’accès uniforme aux services d’annuaire et de nommage
localisation et exploitation de ressources diverses
CORBA, RMI, NIS, LDAP, DNS
Authentification
service unifié d’authetification
mise en place hiérarchique :
utilisateur
domaine
groupe
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
17 / 64
API J2EE
JDBC
Java Database Connectivity
API d’accès aux bases de données
Servlet
composant serveur
mise en place de l’architecture client / serveur
remplace les script CGI
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
18 / 64
API J2EE
JSP
Java Server Page
extension des CGI
génération de pages WEB dynamiques
intégration de logique métier dans du HTML à l’aide de XML ou de
scriptlets
concurent de ASP et PHP
JMS
Java Messaging Service
API et infrastruture
implémentation du modèle à messages
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
19 / 64
API J2EE
JTA
Java Transaction API
interface standard entre le gestionnaire de transaction et les
acteurs (application, gestionnaire de ressources, serveur)
EJB
Entrepise Java Beans
composant fournissant des services
accessible au travers d’interface
hébergé dans un environnemnet d’exécution spécifique
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
20 / 64
Plan
1
Java ?
2
Architecture des applications
3
La plate-forme J2EE
4
Environnement d’exécution
5
JDBC
6
Servlet
7
JSP
8
EJB
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
21 / 64
Une plate-forme
Plate-forme d’exécution
base générique fournissant un ensemble de services élémentaires
définition de la plate-forme en fonction des services recherché
environnement d’exécution
API standardisée
extensibilité des API
J2EE
API
serveurs d’application
services
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
22 / 64
Serveur d’application
Généralités
environnement d’exécution des applications
gestion de la concurrence
n client accédant à 1 même application
Quelques serveurs
SUN AppServers
Tomcat
WebSphere
BEA WebLogic
...
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
23 / 64
Rôles du Serveur d’application
Session
gestion de la session utilisateur
mise en place de contextes particulier par client
gestion des contextes clients pour une même application exploitée
par plusieurs clients
Montée en charge
déploiement parallèle / distribué
équilibrage de la charge
reverse proxy
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
24 / 64
Rôles du Serveur d’application (suite)
Reprise sur erreur
stratégie de reprise sur faute
gestion des données
gestion des transactions
Connexion aux sources de données
persistance
polling de connexion
gestion de connexions multiples
gestion des lots de requêtes
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
25 / 64
Architecture 1.4
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
26 / 64
Architecture 1.5
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
27 / 64
Interopérabilité
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
28 / 64
Architecture de la plate-forme
Hiérarchisation des outils
composants
services d’infrastructures
services de communications
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
29 / 64
Les composants
Composants WEB
assure la présentation - partie visible
JSP (Java Server Page)
La vue
génération de HTML
gestion de l’affichage et non du traitement
inclusion de code Java dans du HTML
inclusion de balises personnalisées
Servlet
Le contrôleur
classe Java de traitement d’une requête
peux de génération de code HTML
génération possible de code XML
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
30 / 64
Les composants (suite)
Composants Métier
spécifiques au traitement des données
propre à un secteur d’activité
logique métier ou logique applicative
interfaçage avec les bases de données
EJB Enterprise Java Beans
Le modèle
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
31 / 64
Services d’infrastructures
Liste des services
bases de données : JDBC
services de nommages, annuaires : JNDI
gestion des transactions : JTA / JTS
connexion aux systèmes d’informations (ERP) : JCA
supervision ; JMX
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
32 / 64
Services de communications
Liste des services
authentification et droits : JAAS
communication et exécution entre objets : RMI
WEB services
communication asynchrone : JMS
courrier électronique : Java Mail
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
33 / 64
Plan
1
Java ?
2
Architecture des applications
3
La plate-forme J2EE
4
Environnement d’exécution
5
JDBC
6
Servlet
7
JSP
8
EJB
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
34 / 64
JDBC
Java Database Connectivity
inclus dans Java 1.4
exploitation du package java.sql
accès à des bases de données
locales
distantes
API indépendante du SGBD
nécessite l’utilisation d’un driver d’accès
fonctionnement en client / serveur
utilisation d’une architecture 3 tiers :
présentation : le client
traitement : le serveur d’application
données : le SGBD
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
35 / 64
Drivers JDBC
Drivers
plus de 190 drivers
existance pour la majorité des SGBD
drivers «simples» ou «multiples»
drivers ODBC
drivers définis en 4 familles
types de drivers :
type 1 : drivers de type pont JDBC-ODBC
accès local
fourni avec le JDK
type 2 : drivers appelant des fonctions natives (en C), partiellement
écrit en Java
type 3 : drivers 100% Java, utilisation d’un protocole générique
type 4 : entièrement écrits en Java, exploitation du protocole réseau
du SGBD
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
36 / 64
Le package java.sql
java.sql
définition des classes et interfaces
interfaces
Driver obtention d’une instance de type Connection
Connection gestion des connexions avec le SGBD
ResultSet gestion des résultats des requêtes
classes
DriverManager gestion des accès
Types assure le mapping SGBD - Java
Exceptions
SQLException gestion des erreurs SQL
SQLWarning gestion des warnings SQL
DataTruncation gestion des corruptions de données
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
37 / 64
Mapping MySQL
Types SQL
CHAR
VARCHAR
TEXT
REAL
DOUBLE
FLOAT
DATE
DECIMAL
NUMERIC
Olivier Flauzac (URCA)
Types Java
Méthode associée
String
String getString()
float
double
float getFloat()
double getDouble()
Date
BigDecimal
Date getDate()
BigDecimal getBigDecimal()
La plate-forme J2EE
[email protected]
38 / 64
Accès à une base de données
1
chargement du driver
2
connexion
3
préparation de la requête
4
exécution de la requête
5
exploitation des résultats
6
fermeture de la connexion
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
39 / 64
chargement du driver et connexion
Chargement du driver
Class . forName ( " com . mysql . j d b c . D r i v e r " ) . newInstance ( ) ;
System . o u t . p r i n t l n ( " D r i v e r chargé " ) ;
Connexion à la base
S t r i n g u r l = new S t r i n g ( " j d b c : mysql : / / l o c a l h o s t / t e s t ? user= l o g&password=pas
Connection c = DriverManager . getConnection ( u r l ) ;
System . o u t . p r i n t l n ( " Connecté à l a base " ) ;
Création d’un objet Statement
Statement s t = c . c r e a t e S t a t e m e n t ( ) ;
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
40 / 64
Exécution dépendante du type de requête
Consultation de données executeQuery(...)
R e s u l t S e t r s = s t . executeQuery ( " s e l e c t ∗ from t a b l e ; " ) ;
Modification des données executeUpdate(...)
i n t v = s t . executeUpdate ( " i n s e r t i n t o t a b l e v a l u e s ( ’ . . ’ , . . . ) ; " ) ;
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
41 / 64
Exploitation des résultats
Principe
déplacement dans les lignes de résultat boolean next()
lecture des informations xxx getXXX(int) (xxx : type des
données)
l’indice des informations débute à 1 ! ! !
Exemple
while ( r s . n e x t ( ) ) {
System . o u t . p r i n t ( r s . g e t S t r i n g ( 1 ) + " " ) ;
System . o u t . p r i n t ( r s . g e t I n t ( 2 ) + " " ) ;
...
}
Fermeture de la connexion
c . close ( )
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
42 / 64
Plan
1
Java ?
2
Architecture des applications
3
La plate-forme J2EE
4
Environnement d’exécution
5
JDBC
6
Servlet
7
JSP
8
EJB
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
43 / 64
Servlets ?
Définitions
programme java autonome exécuté sur le serveur
exécutable sur tous les serveurs «étendus» d’un moteur de servlet
Principe
fichier .class sur le serveur
instanciation à la première utilisation
accès par une URL :
http://www.serveur.fr/contexte/maServlet
exécution dans un thread
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
44 / 64
Pourquoi des servlets
Caractéristiques
persistance des données
gestion de l’ensemble des informations et flux WEB :
formulaires
cookies
sessions
Intérêts
efficacité (code semi compilé)
résidentes
multithreadées
assurent la gestion du cache
portables (Java)
exploitent la totalités des possibilités serveur
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
45 / 64
Fonctionnement
Requêtes
Cycle de vie
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
46 / 64
Servlets de base : javax.servlet.Servlet
Initialisation
void i n i t ( S e r v l e t C o n f i g c o n f i g )
Gestion du traitement
void s e r v i c e ( S e r v l e t R e q u e s t req , ServletResponse r e s )
Destruction
void d e s t r o y ( )
Configuration et informations
ServletConfig getServletConfig ( )
java . lang . S t r i n g g e t S e r v l e t I n f o ( )
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
47 / 64
Servlets HTTP
Principe
gestion des servlet dans le cadre HTTP
classe héritante de javax.servlet.Servlet
Méthodes
gestion des requêtes GET
protected void doGet ( H t t p S e r v l e t R e q u e s t req ,
HttpServletResponse resp )
gestion des requêtes POST
protected void doPost ( H t t p S e r v l e t R e q u e s t req ,
HttpServletResponse resp )
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
48 / 64
Développement
Approche
développement par héitage
servlet utilisateur
héritage de javax.servlet.http.HttpServlet
nécessité de masquer la (les) méthode(s) dans les servlets
développées
dépendant de l’application
dépendant des méthodes d’accès
objets implicites
requête HttpServletRequest request
réponse HttpServletResponse response
gestion des flux d’entrée et de sortie
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
49 / 64
Gestion des données
Formulaires
gestion des formulaires et des méthodes (POST et GET)
récupération des noms des champs et des valeurs
Cookies
utilisation de la classe javax.servlet.http.Cookie
dépose et lecture depuis les classes HttpServletRequest et
HttpServletResponse
Sessions
suivi de navigation
réécriture d’URL
enregistrement et accès aux données sur le serveur
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
50 / 64
Gestion des exécution
Inclusion
inclusion du résultat issu d’un autre traitement
utilisation d’un RequestDispatcher
passage des requêtes et réponses à l’éléments inclus
ne pas fermer les flux dans la servlet incluse !
Délégation
délégation de l’exécution à une autre servlet
possibilité de création de chaînes d’exécutions
réponse issue d’une auttre servlet
utilisation d’un RequestDispatcher
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
51 / 64
Plan
1
Java ?
2
Architecture des applications
3
La plate-forme J2EE
4
Environnement d’exécution
5
JDBC
6
Servlet
7
JSP
8
EJB
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
52 / 64
JSP ?
Principe
code java intégré au HTML
compilé à l’exécution en servlet
styles de programmation
jsp pur
style XML
Fonctionnement
“extension” des servlet
compilation en servlet avant l’exécution
utilisation de toutes les techniques des servlets
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
53 / 64
Eléments
Déclarations
<%! i n t i = 1 5 ; %>
<%! S t r i n g s = new S t r i n g ( " H e l l o " ) ; %>
<jsp : declaration >
i n t i = 15;
</ j s p : d e c l a r a t i o n >
<jsp : declaration >
S t r i n g s = new S t r i n g ( " H e l l o " ) ;
</ j s p : d e c l a r a t i o n >
Expressions
<%= i %>
<%= s %>
< j s p : expression > i </ j s p : expression >
< j s p : expression > s </ j s p : expression >
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
54 / 64
Directives
page
<%@ page a t t r i b u t s %>
< j s p : d i r e c t i v e . page a t t r i b u t s / >
Attribut
import
session
isThreadSafe
info
errorPage
isErrorPage
contentType
pageEncoding
Olivier Flauzac (URCA)
Description
packages à importer
appartenance à une session (true ou false)
gestion de la concurrence
informations relatives à la page
URL de la page d’erreur
indicateur de page d’erreur
type des données et encodage
encodage de la page
La plate-forme J2EE
[email protected]
55 / 64
Directives
include
<%@ i n c l u d e a t t r i b u t s %>
<jsp : d ir e c ti v e . include a t t r i b u t s / >
Attribut
file
Olivier Flauzac (URCA)
Description
nom et chemin du fichier à inclure
La plate-forme J2EE
[email protected]
56 / 64
Script
Scriptlets
<%
code Java
%>
<ul >
<%
f o r ( i n t j =0; j <10; j + + ) {
o u t . p r i n t l n ( " < l i > " + j + " </ l i > " ) ;
}
%>
</ u l >
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
57 / 64
Portée des éléments
page
accès limité à la page
request
accès limité à la page et aux pages incluses ou déléguées
session
accès depuis l’emsemble des éléments de la session
application
accès à l’emsemble des éléments
Attention
accès concurrents possible pour session et application
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
58 / 64
Plan
1
Java ?
2
Architecture des applications
3
La plate-forme J2EE
4
Environnement d’exécution
5
JDBC
6
Servlet
7
JSP
8
EJB
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
59 / 64
Définitions
EJB
composant Java portable, réutilisable, déployable
assemblage de composants pour le développement d’applications
exécution dans un conteneur
3 types d’EJB (Session, Entité, Message-Driven)
Avantages
gestion des services par les conteneurs
transaction, autorisation, persistance ...
isolement de la logique applicative
règles métier
accès aux données
portabilité
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
60 / 64
EJB Session
Rôles
exécution de tâches pour les clients
gestion des traitements
Sans état
exécutions successives “indépendante”
exemple : fonction mathématique
invocations déléguées possibles
Avec état
dédié à un client
appels succesifs avec persistance
pas d’invocation délégué
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
61 / 64
EJB entity
Principe
gestion des données
objet métier
existe dans un système de stockage “permanent”
base de donnée, LDAP, XML ...
Caractéristiques
persistant
gestion client, facture
enchère, réservation
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
62 / 64
EJB Message-Driven
Principe
traitement desdonnée asynchrones
gestion des messages
Caractéristiques
basé sur JMS
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
63 / 64
Des EJB pour Quoi ?
Gestion des montées en charge
développement de solutions clusters
déploiement et distribution
Gestion des clients hétérogènes
accès aux EJB depuis différentes plate-formes
garantie de l’intégrité de règles métier
Développement en équipe
centralisation de la logique métier
répartition des tâches de manière indépendante
Olivier Flauzac (URCA)
La plate-forme J2EE
[email protected]
64 / 64