java avancé tuyêt trâm dang ngoc laboratoire prism université de versailles-saint-quentin cours...
TRANSCRIPT
![Page 1: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/1.jpg)
Java avancé
Tuyêt Trâm DANG NGOC
Laboratoire PRiSMUniversité de Versailles-Saint-Quentin
Cours CNAM, le 26 novembre 2003
![Page 2: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/2.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Evolution de Java
OAK JDK1.0 JDK 1.1 Java2 SDK EE 1.2.1
Java2 SDK EE 1.3.0
Plateforme Java
Plateforme Java2
Personal Java 1.0 / 1.1 / 1.2
Java embarqué
Java2 SDK SE 1.3.0, 1.3.1, 1.4.0
Java2 SDK ME (Micro Edition)
FDT, I/O, Collection et Outils, Applet + Thread, AWT + Swing, TCP/ IP + UDP / IP, RMI, New I/O, Expression rationnelle, Image I/O, Java2D, Java3D, JAI, JMF, Son, JCE, JSSE, JAAS
JSP + Servlet + JavaBeans, EJB, RMI-IIOP and CORBA, JNDI, JMS, JDBC, XML
Pour téléphones cellulaires PDA, JINI, JIRO **
•Java 1.0.2
•Java 1.1.1 , 1.1.2, 1.1.3, 1.1.8
•Java 1.2.2
•Java 1.0.2
•Java 1.1.1 , 1.1.2, 1.1.3, 1.1.8
•Java 1.2.2
![Page 3: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/3.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Threads
Un thread -appelé parfois processus léger - est un unique flux de contrôle séquentiel d’un programme.
On peut utiliser les threads afin d’isoler des tâches.
![Page 4: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/4.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
1. on crée le thread – new; 2. on le démarre – start; 3. le thread s’exécute alors, et reste vivant jusqu’à la fin de son code
exécution, ou jusqu’à ce que ses méthodes stop ou destroy soient invoquées ;
4. durant son exécution, le processus peux être bloqué ou exécutable.
Vie et mort d'un thread
![Page 5: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/5.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Inactivité d'un thread
Un thread est bloqué (Not Runnable), dans les cas suivants :1. sa méthode sleep a été invoquée ;2. le thread a appelé la méthode wait afin d’attendre la réalisation d’un
certain évènement ;3. le thread est en attente d’une entrée/sortie.
Suivant la cause de bloquage du thread, sa remise en activité peut-être :1. si un thread a été mis en sommeil, alors, le nombre de millisecondes
demandes devra être écoulé ;2. si un thread attend une condition, alors, un autre objet doit l’avertir
du changement de la condition – notify ou notifyAll ;3. si un thread est bloqué en attente d’une entrée/sortie alors il faut
attendre que cette entrée/sortie se libère.
![Page 6: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/6.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Comment créer un thread ?
class MonThread extends Thread
{
// constructeur
MonThread (...)
{
[...]
}
// methode ’run’ a surcharger
public void run()
{
[...]
}
}
class MonThread extends Thread
{
// constructeur
MonThread (...)
{
[...]
}
// methode ’run’ a surcharger
public void run()
{
[...]
}
}
class MonThread implements Runnable
{
// constructeur
MonThread (...)
{
[...]
}
// methode ’run’ a implementer
public void run()
{
[...]
}
}
class MonThread implements Runnable
{
// constructeur
MonThread (...)
{
[...]
}
// methode ’run’ a implementer
public void run()
{
[...]
}
}
Par dérivation de la classe ThreadPar dérivation de la classe Thread Par implémentation de l'interface RunnablePar implémentation de l'interface Runnable
![Page 7: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/7.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Communication sur IP
![Page 8: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/8.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Adresses IP / adresses DNS
Une adresse IP référence de manière logique et unique sur l’Internet, l’interface d’une machine.
Des mécanismes de résolution d’adresse permettent de convertir les adresses IP en adresses DNS et vice-versa.
Adresse IP Adresse DNS
216.239.59.99 www.google.fr
192.93.0.1 ns1.nic.fr
![Page 9: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/9.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Ports
Le mécanisme de port est utilisé afin de pouvoir permettre de gérer plusieurs services simultanés depuis une seule interface réseau.
![Page 10: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/10.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Classes utilisées pour la communication
Les classes orientées communication se trouvent dans le paquetage java.net.
Les programmes Java peuvent utiliser TCP ou UDP afin de communiquer sur l’Internet.
classe de manipulation d’adresses InetAddress Les classes utilises spcifiquement pour TCP : URL,URLConnection, Socket , ServerSocket ;
Les classes utilises spécifiquement pour UDP : DatagramPacket , DatagramSocket , MulticastSocket.
![Page 11: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/11.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
URL
![Page 12: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/12.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Java Beans Coding Convention (1/2)
Convention pour les commentaires Convention de nommage
class et interface (pas d'underscore, majuscule au début de chaque mot)
méthode (minuscule au début, majuscule au début de chaque mot)
variable (d'instance préfixé par 'i', de classe par 'c', de paramêtre par 'a', temporaire sans, constante tout en capitale)
paquetage (tout en minuscule, dans le répertoire associé)
Convention d'accès aux variables récupérer la valeur d'une variable d'instance (get suivi du nom de la
variable)
positionner la valeur d'une variable d'instance (set suivi du nom de la variable)
![Page 13: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/13.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Java Beans Coding Convention (2/2) Convention de constructeurs (avoir un constructeur par défaut)
Convention d'initialisation (utiliser les conventions de variables et les set)
Convention d'importation (ne pas utiliser '*')
Sérialisation (doit implémenter l'interface Serializable)
Convention d'évènementEvent handling methods:
void <eventOcurrenceMethodName>(<EventStateObjectType> evt); Event handling methods with arbitrary argument list:
void <eventOcurrenceMethodName>(<ArbitraryParameterList>); Multicast event delivery:
public void add<ListenerType>(<ListenerType> listener); public void remove<ListenerType>(<ListenerType> listener);
Unicast event delivery: public void add<ListenerType>(<ListenerType> listener) throws java.util.TooManyListenersException; public void remove<ListenerType>(<ListenerType> listener);
![Page 14: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/14.jpg)
Architecture J2EE
Cours CNAM, le 26 novembre 2003
![Page 15: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/15.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Plan
Architectures multi-tiers : architecture 1, 2, 3-tiers
J2EE : architecture généraleComposants J2EE : Servlets, JSP, EJB, JMS,
JAAS, JAXP, JavaMail, JNDI, etc.Outils de développement et d’intégrationProduits existants Conclusion
Architectures multi-tiers : architecture 1, 2, 3-tiers
![Page 16: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/16.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Architecture 1-tiers
Présentation
Traitement
données
Navigateur
Serveur Web
Système de fichiers
![Page 17: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/17.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Architecture 2-tiers
Présentation
Traitement
données
Navigateur
Serveur Web
Base de données
Base de données
![Page 18: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/18.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Architecture 3-tiers
+Dimensionnement
+Maintenance
+Fiabilité
+Disponibilité
+Extensibilité
+Gestion du développement
- complexité
Présentation
Traitement
données
Navigateur
Serveur Web
Base de données
Base de données
Serveur d’applications
![Page 19: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/19.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Plan
Architectures multi-tiers : architecture 1, 2, 3-tiers
J2EE : architecture généraleComposants J2EE : Servlets, JSP, EJB, JMS,
JAAS, JAXP, JavaMail, JNDI, etc.Outils de développement et d’intégrationProduits existants Conclusion
J2EE : architecture générale
![Page 20: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/20.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Qu’est ce que la plateforme J2EE ?
Environnement Javalangage objet simpleportablerobusteindépendant de l’architecture (code virtuel)
Pour serveurs d’applications répartiesensemble de servicesensemble de protocoles de communication
![Page 21: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/21.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Container J2EE
Container J2EE : Environnement d’exécution Java 2 permettant d’héberger des composants applicatifs et de contrôler leur exécution. Il existe deux types de container :Container J2EE Web : utilisés pour héberger des
servlets ou des pages JSPContainer J2EE EJB : supportant l’exécution des
composants EJB
![Page 22: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/22.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Interfaces de container
Un container offre des interfaces constituant le contrat de composant. Il gère : des API de services : accès SGBD, annuaires, gestionnaire
de transactions... des API de communication : protocole Internet, envois de
messages ou de mail, accès à des objets distants... Composants d’application :
Servlets, JSP, EJB. Descripteurs de déploiement :
Fichier XML décrivant le composant d’application Inclut des informations additionnelles requises par le
container pour gérer les composants d’application
![Page 23: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/23.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Container
Contrat Container
Descripteurde déploiementDescripteur
de déploiement
Composantd’applicationComposantd’application
Services d
éclaratifs
API services du container
Au
tres
ser
vice
s co
nta
iner
Descripteurde déploiementDescripteur
de déploiement
Composantd’applicationComposantd’application
Descripteurde déploiementDescripteur
de déploiement
Composantd’applicationComposantd’application
Descripteurde déploiementDescripteur
de déploiement
Composantd’applicationComposantd’application
Un ensemble d’API spécifiés par le containair, que les applications doivent étendre ou implémenter
Services additionnels fournis par le container et qui sont généralement requis par toutes les applications du container
Services que le container interpose sur les applications, basés sur le descripteur de déploiementdonné pour chaque composant d’application
D’autres services relatifs à la vie du composant : attente de ressources, ramasse-miette, etc.
![Page 24: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/24.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Container J2EE WebContainer J2EE Web
Intégration J2EE
HTTP
JDBC
Container J2EE EJBContainer J2EE EJB
Enterprise BeanEnterprise BeanEnterprise BeanEnterprise Bean
IIOP-RMILDAP
ERP
JCA
Basede
donnéesRépertoire
PagesJSP Servlets
Navigateur
![Page 25: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/25.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Plan
Architectures multi-tiers : architecture 1, 2, 3-tiers
J2EE : architecture généraleComposants J2EE : Servlets, JSP, EJB, JMS,
JAAS, JAXP, JavaMail, JNDI, etc.Outils de développement et d’intégrationProduits existants Conclusion
Composants J2EE : Servlets, JSP, EJB, JMS, JAAS, JAXP, JavaMail, JNDI, etc
![Page 26: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/26.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Composants J2EE
Outils
App
let
Java
Bea
ns
JavaIDL, RMI-IIOP JAAS JDBC JNDI JAXP
EJB JSP Servlet JTA/JTS
JavaMailJMS
Con
nect
eurs
Container J2EE
BluePrint
Java 2 SDK – Edition standard
JavaBeans Web
Transaction
Messagerie Guide deprogrammation
CORBA Sécurité Base dedonnées
Nommage& Répertoire
XML
![Page 27: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/27.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
API pour J2EE
Java Servlet 2.3 : services web JSP 1.2 : présentation des pages web EJB 2.0 : les beans JAF 1.0 : intégration des JavaBeans JDBC 2.0 : accès aux bases de données RMI-IIOP, RMI-JRMP, CORBA : accès et exécution distants JNDI 1.2 : gestion de noms et d’annuaire JMS 1.0 : gestion de messages JTA/JTS 1.0 : gestion de transactions JavaMail 1.2 : gestion du courrier électronique JAAS 1.0 : gestion de la sécurité, authentification et droits d’accès JAXP 1.1 : gestion de documents XML
![Page 28: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/28.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Java Servlet
programmation côté serveur permet d’étendre les fonctionnalité du serveurs web gère le protocole HTTP construire des applications Web plus performantes
que les CGI accède à toutes les API des classes Java axé sur la génération du contenu
les programmeurs ne se soucient pas de la présentation
![Page 29: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/29.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Cycle de vie d’une servlet
CodeServlet
Serveur
Chargement
CodeServlet
Serveur
Déchargement
CodeServlet
ServeurClient
Client
Traitementdes requêtesclientes par thread
•init() : initialisation de la servletchargement du code.Souvent effectué lors de la premièrerequête cliente (doGet, doPost)Allocation d’un pool de threads•doGet () : Traitement des requêtes HTTP GET•doPut () :Traitement des requêtes HTTP PUT•doPost () :Traitement des requêtes HTTP POST
•destroy () : destruction de la servletpar le serveur
![Page 30: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/30.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
HTTP 1.0
Requête Réponse
HTTP/1.0 200 OK
Mime-version: 1.0
Content-type: text/html
<html>
<head>
GET /home.html HTTP/1.0
User-Agent: Mozilla/4.0
Accept: image/gif, image/jpeg, text/*, */*
Servlet
Service( req,rep)
![Page 31: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/31.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
API Servlet
import javax.servlet.*;import javax.servlet.http.*;
![Page 32: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/32.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Programmation des Servlets
import javax.servlet.http.*;import javax.servlet.*;import java.io.*;
public class Hello extends HttpServlet { public void doGet (HttpServletRequest requete, HttpServletResponse reponse) throws ServletException, IOException { // Récupère le flux d’écriture pour la réponse PrintWriter out = reponse.getWriter () ;
// Prépare la réponse reponse.setContentType ("text/html");
// Récupère l’adresse IP du client String adresseDistante = requete.getRemoteAddr () ;
// Imprime la page HTMLout.println("<html>") ;out.println("<title>Bienvenue !</title> <body>")out.println("<h1>Bonjour !</h1>") ;out.println("Votre adresse IP est identifié comme :<b>" + adresseDistante + "</b>.") ;out.println(“</body></html>") ;
}}
![Page 33: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/33.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Java Server Page (JSP)
Séparation entre la présentation et le contenu des pages web
Encapsulé dans des pages HTML Création de contenu dynamique Situé côté serveur Axé sur la présentation des données
Les webmasters ne se soucient pas de la programmation
Semblable à HTML ou XMLbasé sur des balises
![Page 34: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/34.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
DirectivesBalise de déclaration <%! ... %>Balise d’affichage <%= ... %>Balise de scriplet <% ... %>Balise de directive <%@ ... %> Balise d’action <jsp : ... />
![Page 35: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/35.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
API JSP
import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*;
![Page 36: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/36.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Programmation JSP
<html><!-- Copyright (c) 1999 The Apache Software Foundation. All rights reserved.--><body bgcolor="white">
<!– fixer les paramètres de la page <%@ page language = “JAVA” session = “false” %><!– déclarer une variable caractère <% char c = 0 ; %><!– scriptlet code Java <%
for (int i =0 ; i < 26 ; i++) {c = (char) (‘a’) + i ;
%><!– afficher c <%= c %><% } %> <jsp:useBean id='clock' scope='page' class='dates.JspCalendar' type="dates.JspCalendar" />
<font size=4><ul>
<li> Jour du mois <jsp:getProperty name="clock" property="dayOfMonth"/> </li><li> année <jsp:getProperty name="clock" property="year"/> </li><li> mois <jsp:getProperty name="clock" property="month"/> </li><li> temps <jsp:getProperty name="clock" property="time"/> </li>
</ul></font>
</body></html>
![Page 37: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/37.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Enterprise Java Beans (EJB)
Modèle client/serveur distribué Code exécuté sur le serveur
proche des données serveur souvent plus puissant que le client
Code localisé sur le serveur changer le code du serveur ne change pas le code du client
Un EJB est juste une collection de classes Java et d’un fichier XML. Les classes Java suivent un certains nombre de règles et fournissent des callbacks comme définis dans l’environnement J2EE et les spécifications EJB.
![Page 38: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/38.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Container EJB
Un container EJB est un environnement d’exécution pour un composant EJB.
Un EJB s’exécute sur un container EJB. Un container EJB s’exécute par un serveur d’applications et prend la
responsabilité des problèmes au niveau système Le container EJB gère le cycle de vie de l’EJB. Le container EJB fournit aussi un nombre de services additionnels
Gestion de la persistance Transactions Sécurité Cadre de travail pour Business Logic Dimensionnement Portabilité Gestion des erreurs
![Page 39: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/39.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Beans entité
Un bean entité est un objet persistantUn bean entité peut avoir plusieurs clients
Bean Managed Persistance (BMP) : le container EJB est responsable de la persistance du bean.
Container Manager Persistance (CMP) : le bean est responsable de sa propre persistance.
![Page 40: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/40.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Beans session
Un bean session pour chaque clientIl y a deux types de beans session
sans étatpas d ’état entre les invocationsrapide et efficace
avec étatmaintient les états entre les invocationspersistance limitée
![Page 41: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/41.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Structure EJB
Interface home fournit un moyen pour le client EJB de récupérer une
instance d’un EJB
Interface distante expose les méthodes que le client EJB peut utiliser
Code EJB implémente l’interface distante et l’interface EJB
approprié (SessionBean ou EntityBean par exemple)
![Page 42: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/42.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
API EJB
import javax.ejb.* ;import javax.ejb.spi.* ;
![Page 43: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/43.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Programmation EJB
import java.rmi.RemoteException;import javax.ejb.CreateException;import javax.ejb.EJBHome;
public interface HomeDe extends EJBHome { De create() throws RemoteException, CreateException;}
import javax.ejb.EJBObject;import java.rmi.RemoteException;
public interface De extends EJBObject { public int lancer() throws RemoteException;}
![Page 44: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/44.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
import java.rmi.RemoteException ; import javax.ejb.SessionBean ;import javax.ejb.SessionContext ;
public class DeEJB implements SessionBean {
public DeEJB() {…}public void ejbCreate() {…}public void ejbRemove() {…}public void ejbActivate(){…}public void ejbPassivate() {…}public void setSessionContext (SessionContext sc) {…}public int lancer(){…}
}
![Page 45: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/45.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
JavaBeans Activation Framework (JAF)
Les services d’activation sont des composants fondamentaux utilisés pour activer automatiquement des objets en mémoire à l’état dormant suivant une requête cliente
JAF est un cadre de travail pour construire des applications qui peuvent activer automatiquement des objets pouvant manipuler des données reçues dans un flux d’entrée
![Page 46: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/46.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
API JAF
import javax.activation.* ;
![Page 47: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/47.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Java Data Base Connectivity (JDBC)
JDBC permet aux applications d’accéder à des SGBD relationnels et de manipuler des données provenant de ces bases
API JavaCalqué sur ODBC de MicrosoftImplémente le standard CLI de l’X/OPEN
![Page 48: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/48.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Pilotes JDBC
Type 1 : Pont JDBC-ODBC fournit un accès JDBC API par l’intermédiaire d’un ou plusieurs pilotes ODBC.
Type 2 : A native-API partly Java technology-enabled driver convertit les appels JDBC en un applet sur l’API client (Oracle, Sybase, Informix, DB2, et autres SGBD)
Type 3 : A net-protocol fully Java technology-enabled driver convertit les appels JDBC en un protocole indépendant traduit ensuite en protocole du SGBD par un serveur
Type 4 : A native-protocol fully Java technology-enabled driver convertit les appels JDBC directement dans le protocoles de communication utilisé par le SGBD
![Page 49: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/49.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Java Application
JDBC API
JDBC Type 1
Client natif ODBC
Interface SGBD Client
SGBD
Interface serveur SGBD
Java Application
JDBC API
JDBC Type 2
Interface SGBD Client
SGBD
Interface serveur SGBD
Java Application
JDBC API
JDBC Type 4
SGBD
Interface serveur SGBD
Java Application
JDBC API
JDBC Type 3
SGBD
Interface serveur SGBD
Ecouteur SGBD
Interface client SGBD
indépendant du constructeur dépendant du constructeurna
tif
côté
cli
ent
Eco
ute
dist
ante
![Page 50: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/50.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
API JDBC
import java.sql.*;
![Page 51: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/51.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Programmation JDBC
private void executer (String driver, String chaine_connexion, String login, String password){
// On charge le driverClass.forName (driver) ;
// on se connecteconn = DriverManager.getConnection (chaine_connexion, login, password) ;
// on initialise le curseurstmt = conn.createStatement () ;
// execution d’une chaine SQL sur le SGBDString SQL = "SELECT * from essai" ;ResultSet rs = stmt.executeQuery (SQL) ;ResultSetMetaData rsetdata = rs.getMetaData() ; System.out.println (rsetdata.getColumnName(1) + "\t" + rsetdata.getColumnName(2)) ; while (rs.next ()){
// On recupere le premier champ qui est une chaine puis le deuxieme System.out.println (rs.getString (1) + "\t" + rs.getInt (2)) ;
}stmt.close () ;conn.close () ;
}
![Page 52: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/52.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
RMI-IIOP, RMI-JRMP, CORBA
RMI et CORBA sont des architectures complexes permettant d’invoquer un objet distant géré par une autre machine virtuelle comme s’il était local.CORBA : générique langage
objetsRMI : spécifique à Java
GIOP
IIOP
TCP/IP
RMI
![Page 53: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/53.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Remote method Invocation (RMI)
Objet distant localisé par l’API JNDI
Registre associe au nom objet une référence
stub représente l’interface sur le client. Agit comme proxy de l’objet distant
squelette (skeleton) sur le serveur pour recevoir les messages et invoquer l’objet serveur
Génération de stub et skeleton à l’aide de rmic
Couche de référence distante
Couche transport RMI
TCP/IP
Interface RMI
Stub RMI
Squelette RMI
client RMI
serveur RMI
![Page 54: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/54.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Common Object Request Broker Architecture (CORBA)
GIOP (General Inter-ORB Protocol) : Le protocole de plus haut-niveau de communication CORBA qui convertit des messages créés par les stubs en format transport-message capable de communiquer entre les implémentations ORB (Object Request Broker).
IIOP (Internet Inter-ORB Protocol) : Le protocole de plus bas niveau utilisé par CORBA ;c’est une couche transport décrivant comment les messages GIOP sont transmis au dssus de TCP/IP.
![Page 55: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/55.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Architecture CORBA
Portable Object Adapter (POA)
Object Request Broker (ORB )
Clientreférence
objetreférence
objet objetobjet
Serveur
ORB ORB
![Page 56: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/56.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
API CORBA, RMI
import javax.rmi.* ; import javax.rmi.CORBA ; import org.omg.CORBA.* ; // RMI-IIOP, IDL import org.omg.CosNaming.* ; // RMI-IIOP, IDL
![Page 57: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/57.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Programmation RMI
// Fichier Bonjour.java : Interface du service 'Bonjour'import java.rmi.Remote ;import java.rmi.RemoteException ;
public interface Bonjour extends Remote { String disBonjour (String nom) throws RemoteException ;}
// Fichier 'BonjourImpl.java': implementation de l'interface 'Bonjour‘ definie dans 'Bonjour.java'.import java.rmi.RemoteException ;import java.rmi.server.UnicastRemoteObject ;
public class BonjourImpl extends UnicastRemoteObject implements Bonjour { public BonjourImpl () throws RemoteException { super () ;}
public String disBonjour (String nom) { return "Bonjour " + nom + " !" ;}}
![Page 58: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/58.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
// Enregistre l’objet Bonjour dans le registry du serveur local
import java.rmi.Naming ;
import java.rmi.RMISecurityManager ;
public class ServiceBonjour
{
public static void main (String args[])
throws Exception
{
BonjourImpl obj = new BonjourImpl () ;
Naming.rebind ("rmi://localhost/ObjetBonjour", obj) ;
System.out.println ("Enregistre sous le nom 'ObjetBonjour'") ;
}
}
![Page 59: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/59.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
// Fichier 'BonjourCLient.java' : contacte le registry a l'URL donne et recupere la reference de l'objet.import java.rmi.Naming ;import java.rmi.RemoteException ;
public class BonjourClient { public static void main (String argv [])
throws Exception {
String message = null ; Bonjour obj = null ;
obj = (Bonjour) Naming.lookup ("rmi://gibet.prism.uvsq.fr/ObjetBonjour") ; message = obj.disBonjour (argv [0]) ;
System.out.println ("Le serveur a dit : '" + message + ".") ; } }
![Page 60: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/60.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Java Naming and Directory Interface (JNDI)
JNDI permet d’accéder à de nombreux services de noms et d’annuaire.
En utilisant JNDI, un objet Java peut stocker et récupérer des objets de n’importe quel type
JNDI fournit des méthodes pour effectuer n’importe quelle opération standard sur un annuaire : associer des attributs à un objet ou chercher un objet par ses attributs.
JNDI permet aux applications Java de bénéficier de toutes les informations d’annuaires comme LDAP, NDS, DNS et NIS (YP) et permet à Java de cohabiter avec des applications existantes.
Enregistrement dynamique de services et de clients Traitement point à point
![Page 61: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/61.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Système de fichiers
Système de fichiers
Architecture JNDI
Application Java
API JNDI
Gestionnaire de nommages et d’annuaire
JNDI SPISPI Système de fichiers
SPI nommage CORBA
SPI LDAP SPI RMI Autres SPI
Système de fichiers
Services LDAP
Services LDAP
Services RMI
Services RMI
CosNaming CORBA
CosNaming CORBA
Autres services (DNS, NDS, NIS…)
Autres services (DNS, NDS, NIS…)
![Page 62: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/62.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
API JNDI
import javax.naming.* ; import javax.naming.directiry.* ; import javax.naming.event.* ; import javax.naming.ldap.* ; import javax.naming.spi.* ;
![Page 63: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/63.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Programmation
import javax.naming.InitialContext; import javax.rmi.PortableRemoteObject;
class ClientDe {
// Crée une instance EJB “dé” sur le serveur EJB et appelle ensuite la méthode lancer () // et enfin affiche le résultat du lancé de dé public static void main (String[] args) {
try {
InitialContext jndiContext = new InitialContext (); ref = jndiContext.lookup (“jeux/De"); DeHome home= (EnsDe) PortableRemoteObject.narrow (ref, DeHome.class);
De de = home.create () ; // Crée un objet De depuis l’interface EnsCalculateur System.out.println (de.lancer (0.2, 1000, “vert”)); } catch (Exception e) {
System.out.println(e.toString()); }
} }
![Page 64: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/64.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Java Message Service (JMS)
JMS défini un mécanisme standard permettant aux composants d’envoyer et de recevoir des messages de façon asynchrone
Fournit un service flexible et sûr pour l’échange asynchrone de données et d’évènements commerciaux critiques à travers une entreprise
L’API JMS y ajoute une API commune et un cadre de travail permettant le développement de messages portables basés en Java
![Page 65: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/65.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Synchroneenvoyé une fois, non garanti d’atteindre le serveurperdu si non reçu
AsynchroneEnvoyé jusqu’à acquittementMise en file d’attente jusqu’à ce que le message
soit reçu
![Page 66: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/66.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Client1 Client2file
d’attente
Client1thème
Envoie
message
Client2
Publie
message
Consomme
Acquitte
Souscrit
Délivre
Client3
Souscrit
Délivre
message
message
message
![Page 67: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/67.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Cas d’utilisation de JMS
Système faiblement coupléSans connexionSupprime les dépendances entre le client et la plateforme
serveur (langage de programmation, version)
Publication souscriptionEnvoie, reçoit des information avec un ou plusieurs clients
non identifiés
Intégration avec d’autres systèmes de messageries IBM MQ-SeriesMicrosoft Message Queue
![Page 68: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/68.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
API JMS
import javax.jms.* ;
![Page 69: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/69.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Java Transaction Support/API (JTS/JTA)
JTA et JTS permettent aux applications J2EE d’affranchir le développeur de composant de la gestion des transactions
Les développeurs peuvent définir les propriétés transactionnelles des composants JavaBeans pendant la conception et le déploiement à l’aide d’états déclaratifs dans le descripteur de déploiement.
Le serveur d’applications prend la responsabilité de la gestion des transactions
![Page 70: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/70.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Exemple de déroulement de transaction
begin transaction ... update table-a ... if (condition-x) commit
transaction else if (condition-y) update table-b commit
transaction else rollback transaction begin transaction update table-c commit transaction
![Page 71: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/71.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
API JTA
import javax.transaction ;import javax.transaction.xa ;
![Page 72: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/72.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Programmation JTA
import javax.transaction.UserTransaction ;[...]public void withdrawCash(double amount) { UserTransaction ut = context.getUserTransaction(); try {
ut.begin(); updateChecking(amount); machineBalance -= amount; insertMachine(machineBalance); ut.commit();
} catch (Exception ex) { try { ut.rollback(); } catch (SystemException syex) { throw new EJBException ("Rollback failed: " + syex.getMessage()); } throw new EJBException ("Transaction failed: " + ex.getMessage()); } }[...]
![Page 73: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/73.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
JavaMail
JavaMail 1.2 définit un ensemble d’interface de classe permettant de construire des applications sur les technologies de courrier électronique
Gestion des standards de courrierSMTP : protocole de transport de courrier électroniquePOP : récupération du courrier sur serveur distant IMAP : gestion de boîtes aux lettres distantesMIME : standard de codage du contenu de courrier
permettant notamment l’attachement de documents de tout format et l’utilisation de langues différentes
![Page 74: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/74.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
API JavaMail
import javax.mail.* ; import javax.mail.event.* ; import javax.mail.internet.* ; import javax.mail.search.* ;
![Page 75: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/75.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Programmation JavaMail
import javax.mail.*;import javax.mail.internet.*;import java.util.*;
public class SendEmail{ public String SendMessage(String emailto, String emailfrom, String smtphost, String emailmultipart, String msgSubject, String msgText) { String msgText2 = "multipart message"; boolean sendmultipart = Boolean.valueOf(emailmultipart).booleanValue(); // set the host Properties props = new Properties(); props.put("mail.smtp.host", smtphost); // create some properties and get the default Session Session session = Session.getDefaultInstance(props, null); try { // create a message Message msg = new MimeMessage(session); // set the from InternetAddress from = new InternetAddress(emailfrom); msg.setFrom(from); InternetAddress[] address = { new InternetAddress(emailto) }; msg.setRecipients(Message.RecipientType.TO, address); msg.setSubject(msgSubject);
if(!sendmultipart) { // send a plain text message msg.setContent(msgText, "text/plain"); } else { // send a multipart message// create and fill the first message
part MimeBodyPart mbp1 = new MimeBodyPart(); mbp1.setContent(msgText, "text/plain"); // create and fill the second message part MimeBodyPart mbp2 = new MimeBodyPart(); mbp2.setContent(msgText2, "text/plain"); // create the Multipart and its parts to it Multipart mp = new MimeMultipart(); mp.addBodyPart(mbp1); mp.addBodyPart(mbp2); // add the Multipart to the message msg.setContent(mp); } Transport.send(msg); } catch(MessagingException mex) { mex.printStackTrace(); } return "Email envoyé à " + emailto; }}
![Page 76: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/76.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Java Authentification and Authorization Service (JAAS)
Authentification : déterminer qui exécute le code Java (application, applet, bean, servlet)
Autorisation : vérifier si celui qui exécute le programme a les permissions nécessaires pour le faire
Modules d’authentification disponibles JNDIUNIXWindows NTKerberosKeyStore
![Page 77: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/77.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
API JAAS
import javax.security.auth ; import javax.security.auth.callback ; import javax.security.auth.login ; import javax.security.auth.spi ;
grant <signer(s) field>, <codeBase URL> <Principal field(s)> { permission perm_class_name "target_name", "action"; ... permission perm_class_name "target_name", "action"; };
<Principal field> := Principal Principal_class "principal_name"
import javax.security.* ;
Java.policy
![Page 78: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/78.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Programmation JAAS (authentification)
import java.io.IOException; import javax.security.auth.*; import javax.security.auth.callback.*; import javax.security.auth.login.*; import javax.security.auth.spi.*;
public class SampleLoginModule implements LoginModule { public boolean abort () { // Method to abort the authentication process (phase 2). }public boolean commit() { // Method to commit the authentication process (phase 2). }public void initialize(Subject subject, CallbackHandler callbackHandler, Map sharedState, Map options) { // Initialize this LoginModule.} public boolean login() {
// Method to authenticate a Subject (phase 1).} public boolean logout() {
// Method which logs out a Subject.}
}
grant codebase "file:SampleLoginModule.jar" {permission javax.security.auth.AuthPermission "modifyPrincipals";
};
![Page 79: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/79.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Programmation JAAS (autorisation)
import java.io.File; import java.security.PrivilegedAction; public class SampleAction implements PrivilegedAction {
public Object run() { System.out.println("\nYour java.home property value is: " +
System.getProperty("java.home"));System.out.println("\nYour user.home property value is: " +
System.getProperty("user.home")); File f = new File("foo.txt"); System.out.print("\nfoo.txt does "); if (!f.exists())
System.out.print("not "); System.out.println("exist in the current working directory."); return null; }
}}
grant codebase "file:./SampleAction.jar", Principal sample.principal.SamplePrincipal "testUser" { permission java.util.PropertyPermission "java.home", "read";permission java.util.PropertyPermission "user.home", "read";permission java.io.FilePermission "foo.txt", "read";
};
![Page 80: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/80.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Java API for XML Processing (JAXP)
SAX : gestion de flux d’événements XMLDOM : structure de document XML en
mémoire sous forme d’arbreXSLT : présentation de documents XML
d’après des feuilles de style XSL
![Page 81: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/81.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
XML – SAX -DOM
![Page 82: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/82.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
API XML
import javax.xml.parsers ; import javax.xml.transform ; import javax.xml.transform.dom ; import javax.xml.transform.sax ; import javax.xml.transform.stream ; import org.xml.sax ; import org.xml.sax.ext ; import org.xml.sax.helpers ; import org.w3c.dom ; import org.w3c.dom.html ; import org.w3c.dom.range ; import org.w3c.dom.traversal ;
![Page 83: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/83.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Java pour XML
JAXP : Java API for XML Parsing assure interface avec analyseur de documents produisant
des formats DOM ou SAX JAXB : Java Architecture for XML Binding
permet de construire des documents XML à partir d’objets Java et vice versa
JAXM : Java API for XML Messengingpermet l’échange de messages XML avec des plateformes
distantes en synchrone ou asynchrone JAXR : Java API for XML Registries
interface d’accès aux annuaires de services applicatifs JAX-RPC : JAVA API for XML-based RPC
appels à des procédures à distance avec XML
![Page 84: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/84.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Plan
Architectures multi-tiers : architecture 1, 2, 3-tiers
J2EE : architecture généraleComposants J2EE : Servlets, JSP, EJB, JMS,
JAAS, JAXP, JavaMail, JNDI, etc.Outils de développement et d’intégrationProduits existants Conclusion
Outils de développement et d’intégration
![Page 85: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/85.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
J2EE SDK
J2EE SDK est une définition opérationnelle de la plateforme J2EE
Fait par Sun Microsystem pour les démonstrations, les prototypes et les applications non-commerciales
Contient : J2EE Application Server Serveur Web Base de données relationnelles API J2EE un kit de développement et de déploiement
But : permettre aux développeurs d’exécuter leurs applications J2EE et vérifier leur compatibilité
![Page 86: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/86.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Déploiement J2EE
JAR – Java ARchiveFichier classe JavaEJB
WAR - Web ARchiveServlets JSP
EAR - Enterprise ARchiveContient des JARs et WARs pour former une application
complète Descripteurs de déploiement
XML
![Page 87: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/87.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Plan
Architectures multi-tiers : architecture 1, 2, 3-tiers
J2EE : architecture généraleComposants J2EE : Servlets, JSP, EJB, JMS,
JAAS, JAXP, JavaMail, JNDI, etc.Outils de développement et d’intégrationProduits existants Conclusion
Produits existants
![Page 88: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/88.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Serveurs J2EE
Apache Tomcat, http://jakarta.apache.org/ BEA WebLogic, http://www.bea.com/ IBM WebSphere Sun iPlanet Application Server http://java.sun.com/ Oracle Application Server http://www.oracle.com Caucho Resin, http://www.caucho.com/ Allaire JRun, http://www.allaire.com/ Orion, http://www.orionserver.com/ SilverStream Application Server
![Page 89: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/89.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Plan
Architectures multi-tiers : architecture 1, 2, 3-tiers
J2EE : architecture généraleComposants J2EE : Servlets, JSP, EJB, JMS,
JAAS, JAXP, JavaMail, JNDI, etc.Outils de développement et d’intégrationProduits existants ConclusionConclusion
![Page 90: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/90.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Exemple d’application en entreprise
Servletde fiches
JDBC
JSP SGBD
soumissiond’une fichede renseignement
insertionde la fiche
génération depage d’erreur
Message d’erreur
Insertion
Vérificationdes données
Construction dela requête d’insertion
![Page 91: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/91.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Exemple d’application en entreprise
ClientClient
NavigateurNavigateur
CompsantsgraphiquesCompsantsgraphiques
fichier HTML
Requête HTTP
Serveur W
eb
ServletServlet
JSPJSP
EJBBean SessionBean Session
Bean EntitéBean Entité
Bean SessionBean Session
Bean EntitéBean Entité
Base de donnéesrelationnelles
Mainframe
JDBC
Serveur
d’applications
Serveurs
de donnes
![Page 92: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/92.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Exemple d’application en entreprise
recupérer classes
Servletde classes
EJB Classes
JSP JMS
récupérerclasses
présentationliste de classes
Listes de classes
EIS
voirnotifications
pas denotifications
récupérerclasses
renvoie classes
renvoie classes
![Page 93: Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003](https://reader035.vdocuments.site/reader035/viewer/2022062622/551d9d95497959293b8cc74e/html5/thumbnails/93.jpg)
Tuyêt Trâm DANG NGOC - Université de Versailles mardi 11 avril 2023
Architecture sécurisée (JCA)
Service de cryptographie
Interface et classe de certificat
Classe et interface de gestion de clef