Aucun titre de diapositive - PowerPoint PPT Presentation

About This Presentation
Title:

Aucun titre de diapositive

Description:

... de la m moire s curisation des transactions Fourniture par des entreprises tierces de serveurs J2EE 24000 tests de certification ... Plateform Entreprise ... – PowerPoint PPT presentation

Number of Views:63
Avg rating:3.0/5.0
Slides: 25
Provided by: irp2
Category:

less

Transcript and Presenter's Notes

Title: Aucun titre de diapositive


1
Cours n 11 Services Web et plateforme J2EE
2
Sommaire
  • Services de présentation
  • Les Servlettes
  • Pages JSP (Java Server Page)
  • Déploiement de WAR (Web Archive)
  • Services dapplication
  • Composants transactionnels (Entity Java Bean)
  • Déploiement dEJB

3
INTRODUCTION Bibliographie
Eric Sarrion, Développement Web avec J2EE,
O'Reilly, 2005. Bruce W. Perry, Java Servlet and
JSP Cookbook, O'Reilly, 2004. Laboratoire
Supinfo, EJB 3 Des concepts à l'écriture du
code - Guide du développeur, Dunod ,
2006. Etienne Langlet, Apache Tomcat 5 Serveur
d'application Java, ENI , 2006. www.apache.org jo
nas.objectweb.org
4
INTRODUCTION Java 2 Entreprise Edition
(J2EE)
  • Schéma de développement dapplications internet,
    intranet et extranet
  • Proposition de la société Sun (/java.sun.com/javae
    e/5/docs/api/)
  • Architecture dapplications distribuées à base de
    composants (API) client, serveur, conteneur,
    composant logiciel
  • Spécification des interfaces et de
    lenvironnement dapplication
  • Développement et déploiement rapide de services
    WEB fiables persistance des données gestion de
    la mémoire sécurisation des transactions
  • Fourniture par des entreprises tierces de
    serveurs J2EE 24000 tests de certification IBM
    (WebSphere), Oracle, BEA (WebLogic), Bordland,
    ObjectWeb (open-source Jonas), Jboss group
    (open-source commercial Jboss)
  • Solutions alternatives .NET framework, SAP

5
INTRODUCTION Java 2 Entreprise Edition
(J2EE) - Composants
  • Services de présentation
  • Servlets  Gestion coté serveur de réponses aux
    requêtes client (e.g., protocole http)
  • JSP, JSF  Pages Web dynamiques
  • Services dapplication
  • EJB  Composants distribués transactionnels
  • JTA  Gestion des transactions
  • JAXP  Analyse de documents XML
  • JAXB  Sérialisation de données en XMLJMX 
    Administration des applications
  • JAXR  Enregistrement de Web Services
  • Services de communication
  • JMS  Communication asynchrone
  • JAXM  Communication asynchrone par XML
  • JAX-RPC  Communication synchrone par
    XMLJavaMail  Gestion des mails
  • RMI  Communication distante entre des objets
    java
  • Java IDL  Communication entre objets Java et
    objets non-Java (CORBA)
  • Services de connexion
  • JNDI  Connexion à des annuaires, notamment des
    annuaires LDAP
  • JDBC  Connexion à des bases de donnéesJCA 
    Connexion, notamment à des PGI

6
1. SERVICES DE PRESENTATION Principes
Indépendance entre présentation et
application Heuristique de conception
Modèle-Vue-Contrôleur (MVC) pour
lIHM Simplification de la maintenance et
amélioration de la sécurité Multiplicité des vues
(présentation) sur un modèle unique de
données Création dynamique de pages
web Adaptation aux données provenant du
modèle Traitement automatique de données
structurées Formulaire, tableau Deux types de
composants Pages web dynamiques (Java Server Page
et Java Server Face)API Java pour le traitement
des requêtes (Servlet) Exécution sur des
serveurs J2EE (moteur de servlet)
7
1.1 LES SERVLETTES La classe GenericServlet
(1/2) Cycle de vie
  • Création de la classe à la réception de la
    requête Méthodes appelées à la création
  • void init() void init(ServletConfig  config)
  • Destruction de la classe à la fin du traitement
  • Méthode appelée avant à la destruction void
    destroy()
  • Fichier des traces dexécutionMéthodes
    décriture
  • void log(String msg) void log(String message,
    Throwable t)
  • Traitement de la requête et denvoi de la réponse
  • void service(ServletRequest req,
    ServletResponse res)

8
1.1 LES SERVLETTES La classe GenericServlet
(2/2) - Accesseurs
  • Accès aux paramètres de la requête
  • Ensemble de couples attribut-valeur
  • Liste de Attributs
  • Enumeration getInitParameterNames()
  • Valeur associé à un attribut
  • String getInitParameter(String name)
  • Caractéristiques de la servletCaractéristiques
    générales
  • ServletConfig getServletConfig()
  • Auteur, version.  
  • String getServletInfo()
  • Nom 
  • String getServletName()
  • Variables globales associées à la servlet
  • Partage de données entre servlet
  • ServletContext getServletContext()

9
1.1 LES SERVLETTES Interface ServletRequest
caractéristiques réseau
  • Protocole Réseau
  • String getProtocol() Nom et version du
    protocole réseauboolean isSecure() Est-ce un
    protocole sécurisé ?
  • Nom, adresse IP et port du client envoyant la
    requête String getRemoteHost() NomString
    getRemoteAddr() Adresse IPint getRemotePort()
    Port
  • Nom, adresse IP et port du serveur destination de
    la requêteString getServerName() Nom
  • int getServerPort() Adresse IP
  • Nom, adresse IP et port de linterface recevant
    la requête
  • String getLocalName() Nom String getLocalAddr()
    Adresse IP
  • int getLocalPort() Port

10
testServletRequestNet.java
1.1 LES SERVLETTES Interface ServletRequest
caractéristiques réseau
public class testServletRequestNet extends
HttpServlet protected void doGet(HttpServletReq
uest req, HttpServletResponse res) throws
ServletException, IOException PrintWriter
writer res.getWriter() // protocole
utilisé writer.println( req.getProtocol() " "
req.isSecure()) // adresse du client writer.print
ln(req.getRemoteHost() " " req.getRemoteAddr()
" " req.getRemotePort()) // adresse du
serveur writer.println(req.getServerName() " "
req.getServerPort()) // adresse de
l'interface writer.println(req.getLocalName() "
" req.getLocalAddr() " " req.getLocalPort())

HTTP/1.1 false192.161.1.106 192.161.1.106
1077192.161.1.102 9000lili 192.161.1.102 9000
11
1.1 LES SERVLETTES Interface ServletRequest
caractéristiques de la requête
  • Préférences du client
  • Locale getLocale()
  • Corps de la requêteString getCharacterEncoding()
    codage des caractèresint getContentLength()
    taille en octets.  String getContentType()
    codage MIME utilisé
  • Accès au corps de la requêteServletInputStream
    getInputStream() Flux de lecture
    binaireBufferedReader getReader() Flux de
    lecture texte
  • Accès aux paramètres de la requête
  • String getParameter(String nom) Valeur dune
    requête dun nom donné 
  • Map getParameterMap() conteneur associatif
    contenant les requêtes.  

12
testServletRequestReq.java
1.1 LES SERVLETTES Interface ServletRequest
caractéristiques de la requête
public class testServletRequestReq extends
HttpServlet protected void doPost(HttpServletRe
quest req, HttpServletResponse res) throws
ServletException, IOException PrintWriter
writer res.getWriter() // préférences du
client writer.println(req.getLocale().getDisplayLa
nguage()) // caractéristiques du corps de la
requête writer.println(req.getCharacterEncoding()
" " req.getContentLength() " "
req.getContentType()) // Lecture des paramètres
de la requête Map m req.getParameterMap()
Iterator it m.entrySet().iterator() String
valeurs while (it.hasNext() true) Map.Entry
entrée (Map.Entry)it.next() writer.print(" "
entrée.getKey() "") valeurs
(String)entrée.getValue() for (int j 0j lt
valeurs.lengthj) writer.print(valeursj "
") writer.println()
13
testServletRequestReq.html
1.1 LES SERVLETTES Interface ServletRequest
caractéristiques de la requête
ltHTMLgt ltBODYgt ltFORM ACTION"http//192.168.1.1029
000/cours11/ServletRequestReq" METHODPOSTgt Nom
ltINPUT NAME"nom"gt ltPgt Prénom ltINPUT
NAME"prenom"gt ltPgt ltINPUT TYPESUBMIT
VALUE"Envoi"gt ltINPUT TYPERESET VALUE"Remise à
zéro"gt lt/FORMgt lt/BODYgt lt/HTMLgt
français null 28 application/x-www-form-urlencode
d prenomClaude nomMontacié
14
1.1 LES SERVLETTES Interface
HttpServletRequest
  • Authentification
  • String getAuthType() Méthode dauthentificationSt
    ring getRemoteUser() Nom du client (après
    authentification)
  • RequêteString getMethod() Type de méthode
    associé (GET, POST, PUT)long getDateHeader(String
     name) Date associée à un champ dentêteString
    getHeader(String name) Valeur associée à un champ
    dentêteEnumeration getHeaderNames() Liste des
    champs dentête String getQueryString() Partie
    interrogation de la requête (?.)
  • Chemins dadressage
  • String getRequestURI() String getPathInfo()
  • String getContextPath() String getPathTranslated()
    String getServletPath()
  • Gestion de la persistanceLecture des cookies
    associés à la requête  Cookie getCookies()
    cookies associés à la requêteboolean
    isRequestedSessionIdFromCookie() Lecture des
    paramètres de la session courante
  • HttpSession getSession() HttpSession
    getSession(boolean  cr)         
  • String getRequestedSessionId()

15
testCookie.java
1.1 LES SERVLETTES Persistance de la
connexion
  • // Recherche d'un cookie d'attribut Nom
  • String Valeur null
  • Cookie cookies request.getCookies()
  • for(int i0 i lt cookies.length i)
  • if (cookiesi.getName().equals("Nom"))
  • Valeur cookiesi.getValue()
  • // ecriture de la reponse
  • response.setContentType("text/html")
  • PrintWriter out response.getWriter()
  • out.println("lthtmlgtltheadgt")
  • out.println("lttitlegtMon Cookielt/titlegt")
  • out.println("lt/headgtltbodygt")
  • if (Valeur null)
  • out.println("Création du cookie")
  • Cookie unCookie new Cookie("Nom", "Montacié")
  • response.addCookie( unCookie )

16
1.2 JAVA SERVER PAGE Principes et syntaxe
1.2 JAVA SERVER PAGE Principes et syntaxe
  • Code Java intégré dans une page HTML
  • Traduction du code par le serveur J2EE en servlet
    (1er appel)
  • Exécution par le moteur de servletCommunication
    avec les autres composants (servlets, EJB, )
  • Avantages / servlet
  • simplicité décriture et de déploiement
  • Inconvénients /servlet
  • visibilité du code Java (.class pour les
    servlets) perte de la structuration (paquetage)
  • Syntaxe (extrait)
  • lt code Java gt contient du code Java qui fera
    partie de la méthode principale de la page JSP
  • lt expression gt la valeur de expression sera
    intégrée dans la page HTML à la place de la
    balise
  • lt! gt définition dune variable dinstance
    (persistance entre deux invocations)
  • lt gt définie une variable locale à la jsp
    (réinitialisée à chaque invocation)
  • Objets pré-déclarés (out request response
    exception session application)

17
Heure.jsp
1.2 JAVA SERVER PAGE Interface
ServletRequest caractéristiques de la requête
lt //programme Java affichant l'heure gt lt_at_ page
import"java.util." gt Calendar
calendrierCalendar.getInstance() int
heurescalendrier.get(Calendar.HOUR_OF_DAY) int
minutescalendrier.get(Calendar.MINUTE) int
secondescalendrier.get(Calendar.SECOND) gt lt
// code HTML gt lt!DOCTYPE html PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN"
"http//www.w3.org/TR/html4/loose.dtd"gt lthtmlgt
ltheadgt ltmeta http-equiv"Content-Type"
content"text/html charsetISO-8859-1"gt lttitlegtPa
ge JSP affichant l'heurelt/titlegt
lt/headgt ltbodygt ltcentergt lth1gtUne page JSP générée
dynamiquementlt/h1gt lth2gtIl est ltheuresgtltminut
esgtltsecondesgtlt/h2gt ltbrgt lth3gtA chaque fois
que vous rechargez la page, l'heure
changelt/h3gt lt/bodygt lt/htmlgt
18
web.xml
1.3 DEPLOIEMENT DE WEB ARCHIVE Règles de
construction
  • Archive compressé (jar) dune arborescence
  • Répertoire WEB-INF contenant deux répertoires
    (classes et sources) et web.xml
  • paquetages des .class (classes) et paquetages
    des .java (sources) fichier de référencement des
    servlets pour le serveur J2EE (web.xml)fichiers
    .html et .jsp

lt?xml version"1.0" encoding"ISO-8859-1"?gt lt!DOCT
YPE web-app PUBLIC "-//Sun Microsystems,
Inc.//DTD Web Application 2.2//EN"
"http//java.sun.com/j2ee/dtds/web-app_2_2.dtd"gt lt
web-appgt ltservletgt ltservlet-namegttestS
ervletRequestNetlt/servlet-namegt
ltservlet-classgtcours11.testServletRequestNetlt/serv
let-classgt lt/servletgt ltservlet-mappinggt
ltservlet-namegttestServletRequestNetlt/servlet
-namegt lturl-patterngt/testServletRequestNet
lt/url-patterngt lt/servlet-mappinggt lt/web-appgt
19
2. SERVICES DAPPLICATION Processus et
composant métier
  • Processus métier (ou procédure dentreprise)
  • Algorithme permettant de systématiser une suite
    de tâches dans le but datteindre certains des
    objectifs dune entreprise vente gestion
    commerciale, besoins du client, création dune
    commande achat politique dachat et de
    concurrence veille stratégique, concurrence,
    recherche dinformations Composant métier
  • Composant logiciel correspondant à limplémention
    dun processus métier
  • Différentes granularités établissement dune
    commande, consolidation dun ensemble de
    commandes
  • Architecture logicielle dune application
    répartie
  • Composant dIHM (service de présentation)
  • Composant métier (service dapplication exécutant
    un processus métier)Modèle de gestion de donnée
    (définition et accès fiable aux données métier)

20
2.1 COMPOSANTS TRANSACTIONNELS Accès fiable
aux données
Propriétés ACID Propriétés essentielles d'un
sous-système de traitement de transactions d'un
système de gestion de base de donnéesTransaction
(ensemble de consultations et de modifications
dun base de données) Atomicité  Validation
complète dune transaction ou annulation de la
transactionCohérence  Interdiction et
annulation dune transactions incohérente avec le
modèle des donnéesIsolation  Pas dinterférence
entre des transactions simultanéesDurabilité 
Pas de perte dune transaction validée Composants
transactionnelsComposants métiers permettant la
mise en œuvre de transactions respectant les
propriétés ACID.
21
2.1 COMPOSANTS TRANSACTIONNELS Entity Java
Bean (EJB)
Composants transactionnels de J2EE 1998 version
1.0 Lancement de Java Plateform Entreprise
Edition (IBM, Sun)2001 version 2.0 Compatibilité
Corba2003 version 2.1 Compatibilité Web Services
(SOAP) Référence actuelle2006 version 3.0
Simplification de la syntaxe Typologie des
EJB Session Beans Composant implémentant une
tâche client avec état (Stateful) ou sans état
(stateless)Entity BeansComposant gérant des
données persistantes Message-Driven
Beanscomposant gérant et transportant des
messages asynchrones
22
2.1 COMPOSANTS TRANSACTIONNELS Architecture
logicielle des EJB
Interaction avec un Bean par lintermédiaire de
deux (ou quatres) interfaces Remote (services
métiers) Ensemble de méthodes métiers fournies
par le BeanDéfinit le comportement de lobjet
distribuéProche dun objet serveur
RMI RemoteHome (gestion du cycle de vie)
Allocation, destruction dinstances Recherche
dinstanceSeul élément du Bean enregistré dans
le service de nommage (JNDI) Local et LocalHome
pour les accès de client du même
conteneur Amélioration des performances
23
SessionEJB.java SessionHome.java Session.java
2.1 COMPOSANTS TRANSACTIONNELS Création
automatique par le plugin Jope
public class SessionEJB implements SessionBean
SessionContext ejbContext public void
setSessionContext(SessionContext ctx) ejbContext
ctx public void ejbRemove() public void
ejbCreate() throws CreateException public void
ejbPassivate() public void ejbActivate()
/ méthodes métiers / public void method1()
System.out.println("It is method1 !!!") public
void method2(java.lang.String s)
System.out.println("It is method2 with parameter
" s)
public interface SessionHome extends EJBHome
MonPremierEJB create() throws CreateException,
RemoteException
public interface Session extends EJBObject
public void method1() throws RemoteException
public void method2(java.lang.String s) throws
RemoteException
24
SessionClient.java
2.2 DEPLOIEMENT DEJB Règles de construction
  • Archive compressé (jar) dune arborescence
  • Répertoires des paquetages de classes
  • Répertoire META-INF contenant fichiers de
    description et de référencement
  • ejb-jar.xml description des ejb
  • X-ejb-jar.xml fichier de référencement dépendant
    du serveur J2EE

String bName "SessionHome" try home
(SessionHome) PortableRemoteObject.narrow(ctx.look
up(bName), MonPremierEJBHome.class) Session
bean home.create() bean.method1()
catch(Exception e) e.printStackTrace()
System.exit(2)
Write a Comment
User Comments (0)
About PowerShow.com