IFT604_5a_J2EE

publicité
J2EE : Java Enterprise Edition
Vue générale
Plan
 J2EE
 Modèle 3 tiers
 Les composants
 Les communications entre clients et serveurs
 Les « containers »
 Les 3 tiers
 Le tiers client
 Le tiers web
 Le tiers « affaires »
 Déploiement
 Application Web
Le modèle d’application de J2EE
Les composants de J2EE
 Sur le client
Applications client
Fournir une interface plus riche que ce qui peut être fait en html
Accès aux BDs, aux EJBs, servlets…
Application web
Browser web
Pages web dynamiques
En général pas d’accès au BD sur le serveur, la logique d’affaire
reste simple
Applets
Il sera possiblement nécessaire d’avoir un plug-in et de fichier de
politiques de sécurité
Les composants de J2EE
Sur le serveur
Composants web
Java servlets, JavaServer Faces, JSP
Composants entreprises
Enterprise JavaBeans (EJB)
Les composants de J2EE
Composants JavaBeans
Pas des composants J2EE
Utiles pour gérer les flots de données entre le client
et le serveur ainsi qu’entre le serveur et les BDs
Différences entre les classes J2SE et les
composants J2EE
Les composants sont destinés à être déployées,
exécutées et gérées par un serveur
La communications entre le
client et le serveur
 Directement
 Par le biais d’un client
s’exécutant dans un browser
 via JSP ou des servlets
 Compromis
 Mettre le plus de fonctionnalités
sur le client près de l’usager
(thick client)
 Décharger le client de ces
fonctionnalités et les mettre sur
le serveur (thin client)
Le tiers Web
Les composants Web
 Servlets
 Classes Java qui traitent dynamiquement les requêtes et construisent les
réponses
 Pages JSP
 Documents textes qui s’exécutent en tant que servlets, mais permettent de créer
du contenu statique de manière plus naturelle
 JavaServerFaces
 S’appuie sur les servlets et JSP
 Fournir un framework de composants d’interfaces usagers pour construire des
applications web
 Les pages html statiques, les applets et les classes utilitaires côté serveur
ne sont pas considérés comme des composants web par la spécifications
J2EE
Le tiers « affaires »




Implémente la logique d’affaires
Reçoit les données du client
Les traite
Les emmagasine, le cas échéant
Les « containers » J2EE
 Les applications multi-tiers sont difficiles à écrire
Beaucoup de code entrelacé pour gérer les transactions, l’état,
le pooling des ressources, etc.
 Container
Sert d’interface entre les fonctionalités de bas niveau qui sont
spécifiques à une plateforme
 Avant de pouvoir exécuter un composant web, EJB ou
d’application client
L’assembler dans un module J2EE
Le déployer dans son conteneur
Container et services de
support du serveur
 Adapte/configure les fonctions de support du serveur
Sécurité
S’assurer que les ressources système ne sont accédées que par les
usagers authorisés
Transactions
Recherche JNDI (Java Naming and Directory Interface)
Connexion remote
Gestion des communications de bas niveau entre les clients et les
EJB
Etc.
Types de containers
Types de containers
 Le container serveur J2EE
 Fournit les containers web et EJB
 Le container EJB
 Gère l’exécution des EJB
 Le container Web
 Gère l’exécution des pages JSP et des servlets
 Le container de l’application client
 Gère l’exécution des applications clients
 Le container d’applets
 Browser + Java plug-in
Support pour les services web
 Les services web sont des applications d’affaires basées sur le web
qui utilisent des standards fondés sur XML et des protocoles de
transport pour échanger des données avec les clients
 Java EE XML API
 Protocole de transport SOAP
 WSDL (Web Services Description Language)
 UDDI (Universal Description, Discovery and Integration)
 ebXML
Packaging des applications
Fichier EAR (Enterprise ARchive)
Fichier JAR avec une extension .ea
des modules J2EE
des fichiers de descriptions de déploiement
• Java EE deployment descriptor : paramètres génériques
– Exemple : moduleType.xml
• Runtime deployment descriptor: paramètres spécifiques
– exemple : sun-moduleType.xml
Structure d’un fichier EAR
Les modules J2EE
 Module EJB :
 fichiers .class des ejb + descripteur
 Fichier .jar
 Module web
 fichiers .class des servlets, fichiers JSP, fichiers .class des classes utilitaires,
fichier html et images, + descripteur
 Fichier .war (Web ARchive)
 Module de l’application client
 Fichiers .class + descripteur
 Fichiers .jar
 Modules des adapteurs pour les ressources
 Interfaces Java, classes, librairies natives, documentation, + descripteur
 Fichier JAR avec extension .rar (resource adapter archive)
Java EE APIs
Java EE APIs
















Enterprise JavaBeans Technology
Java Servlet Technology
JavaServer Pages Technology
Java Message Service API
Java Transaction API
JavaMail API
JavaBeans Activation Framework
Java API for XML Processing
Java API for XML-Based RPC
SOAP with Attachments API for Java
Java API for XML Registries
J2EE Connector Architecture
JDBC API
Java Naming and Directory Interface
Java Authentication and Authorization Service
Simplified Systems Integration
Les applications Web
Une extension dynamique d’un serveur web ou
d’un serveur d’application
Orientée présentation
Génération de pages web interactives et de contenu
dynamique en réponse aux requêtes
• Servlets et pages JSP
Orientée service
Implémentaion du point d’entrée d’un service web
• les applications web oriéentée présentation sont souvent
clientes des applications web orientées services
Éléments de base
 Composants web
 Servlets, pages JSP ou point d’entrée de service web
1.
2.
3.
4.
5.
6.
Le client envoie une requête http au serveur
Conversion par le serveur en objet HTTPServletRequest
Livraison de l’objet au composant web
Réponse au serveur sous forme d’objet HTTPServletResponse
Conversion par le serveur en réponse HTTP
Envoie de la réponse au client
Application web
Servlet vs JSP
Servlet
Applications orientées services
Les fonctions de contrôle des applications orientées
présentation
Distribution des requêtes
Manipulation des données non textuelles
Pages JSP
Plus appropriées pour générer des balises textuelles
Servlet
 La base de toutes les technologies des applications web
 Chaque technologie ajoute un niveau d’abstraction qui facilite le
prototypage et le développement d’applications web plus faciles à
maintenir, plus facile à passer à l’échelle, plus robustes.
Container Web
Services offerts par la plateforme d’exécution
Acheminement des requêtes
Sécurité
Concurrence
Gestion du cycle de vie
Quelques APIs disponibles
Noms
Transactions
Courrier électronique
Configuration d’une application web
L’information de configuration
Un fichier XML
Web application deployment descriptor (DD)
Voir spécification Java Servlet
Cycle de vie d’une application web
1. Coder les composants web.
2. Ecrire le fichier DD (web application deployment
descriptor).
3. Compiler les composants de l’application web e tdes
classes utilitaires référencées par les composants.
4. Optionnellement, packaging de l’application dans une
unité déployable.
5. Déployer l’application web dans un container web.
6. Accéder à l’URL qui référence l’application web
Module web
Module web
La plus petite unité déployable et utilisable de
ressources web
Ressources web
Composants web
Fichiers de contenu web statique
• Images, pages web
Classes utilitaires du côté serveur (ex: chariot)
En général des java beans
Classes du côté client
Applets et classes utilitaires
Structure d’un module web
Déploiement d’un module web
Structure de fichiers
Fichier WAR
Doit contenir un DD
Racine contextuelle de l’application web
Mapping des noms portables des ressources vers
les ressources du serveur d’application
Configuration d’applications web
 Mapping des URLs en composants web
 Déclaration des fichiers de bienvenue
 Liste de files que le container web va concaténer à une requête pour
un URL qui ne correspond pas à un composant web
E.g. welcome.html
host:port/webapp/directory, ne correspond à aucun composant web
Transformé en host:port/webapp/directory/welcome.html
 Paramètres d’initialisation
 Du contexte (getServletContext())
<context-param>
<param-name>
<param-value>
 Du composant web
<init-param>
<param-name>
<param-value>
Configuration d’une application web
 Mapping des erreurs sur des écrans d’erreurs
<error-page>
<exception-type> //exception ou le code d’erreur HTTP
<location> // nom de la ressource à invoquer en cas d’erreur
// doit être précédé d’un /
 Exemple de code d’erreur HTTP
 404: Indicates that the requested resource is not available
 500: Indicates that an error occurred inside the HTTP server that prevented it from
fulfilling the request
 503: Indicates that the HTTP server is temporarily overloaded and unable to handle
the request
Configuration d’une application web
 Déclaration de références à des ressources utilisées par l’application
 Annotations Java EE : BD, service web
Téléchargement