La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003.

Présentations similaires


Présentation au sujet: "Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003."— Transcription de la présentation:

1 Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003

2 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Evolution de Java OAK JDK1.0 JDK 1.1 Java2 SDK EE Java2 SDK EE Plateforme Java Plateforme Java2 Personal Java 1.0 / 1.1 / 1.2 Java embarqué Java2 SDK SE 1.3.0, 1.3.1, 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 Java 1.1.1, 1.1.2, 1.1.3, Java Java Java 1.1.1, 1.1.2, 1.1.3, Java 1.2.2

3 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Threads Un thread -appelé parfois processus léger - est un unique flux de contrôle séquentiel dun programme. On peut utiliser les threads afin disoler des tâches.

4 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles 1. on crée le thread – new ; 2. on le démarre – start ; 3. le thread sexé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

5 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles 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 dattendre la réalisation dun certain évènement ; 3.le thread est en attente dune 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 lavertir du changement de la condition – notify ou notifyAll ; 3.si un thread est bloqué en attente dune entrée/sortie alors il faut attendre que cette entrée/sortie se libère.

6 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles 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 Thread Par implémentation de l'interface Runnable

7 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Communication sur IP

8 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Adresses IP / adresses DNS Une adresse IP référence de manière logique et unique sur lInternet, linterface dune machine. Des mécanismes de résolution dadresse permettent de convertir les adresses IP en adresses DNS et vice-versa. Adresse IPAdresse DNS www.google.fr ns1.nic.fr

9 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles 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.

10 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles 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 lInternet. classe de manipulation dadresses InetAddress Les classes utilises spcifiquement pour TCP : URL,URLConnection, Socket, ServerSocket ; Les classes utilises spécifiquement pour UDP : DatagramPacket, DatagramSocket, MulticastSocket.

11 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles URL

12 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles 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)

13 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles 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ènement Event handling methods: void ( evt); Event handling methods with arbitrary argument list: void ( ); Multicast event delivery: public void add ( listener); public void remove ( listener); Unicast event delivery: public void add ( listener) throws java.util.TooManyListenersException; public void remove ( listener);

14 Architecture J2EE Cours CNAM, le 26 novembre 2003

15 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Plan Architectures multi-tiers : architecture 1, 2, 3- tiers J2EE : architecture générale Composants J2EE : Servlets, JSP, EJB, JMS, JAAS, JAXP, JavaMail, JNDI, etc. Outils de développement et dintégration Produits existants Conclusion Architectures multi-tiers : architecture 1, 2, 3-tiers

16 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Architecture 1-tiers Présentation Traitement données Navigateur Serveur Web Système de fichiers

17 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Architecture 2-tiers Présentation Traitement données Navigateur Serveur Web Base de données

18 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles 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 Serveur dapplications

19 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Plan Architectures multi-tiers : architecture 1, 2, 3- tiers J2EE : architecture générale Composants J2EE : Servlets, JSP, EJB, JMS, JAAS, JAXP, JavaMail, JNDI, etc. Outils de développement et dintégration Produits existants Conclusion J2EE : architecture générale

20 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Quest ce que la plateforme J2EE ? Environnement Java langage objet simple portable robuste indépendant de larchitecture (code virtuel) Pour serveurs dapplications réparties ensemble de services ensemble de protocoles de communication

21 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Container J2EE Container J2EE : Environnement dexécution Java 2 permettant dhé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 JSP Container J2EE EJB : supportant lexécution des composants EJB

22 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles 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 dapplication : Servlets, JSP, EJB. Descripteurs de déploiement : Fichier XML décrivant le composant dapplication Inclut des informations additionnelles requises par le container pour gérer les composants dapplication

23 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Container Contrat Container Descripteur de déploiement Descripteur de déploiement Composant dapplication Composant dapplication Services déclaratifs API services du container Autres services container Descripteur de déploiement Descripteur de déploiement Composant dapplication Composant dapplication Descripteur de déploiement Descripteur de déploiement Composant dapplication Composant dapplication Descripteur de déploiement Descripteur de déploiement Composant dapplication Composant dapplication Un ensemble dAPI 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éploiement donné pour chaque composant dapplication Dautres services relatifs à la vie du composant : attente de ressources, ramasse-miette, etc.

24 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Container J2EE Web Intégration J2EE HTTP JDBC Container J2EE EJB Enterprise Bean IIOP-RMI LDAP ERP JCA Base de données Répertoire Pages JSP Servlets Navigateur

25 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Plan Architectures multi-tiers : architecture 1, 2, 3- tiers J2EE : architecture générale Composants J2EE : Servlets, JSP, EJB, JMS, JAAS, JAXP, JavaMail, JNDI, etc. Outils de développement et dintégration Produits existants Conclusion Composants J2EE : Servlets, JSP, EJB, JMS, JAAS, JAXP, JavaMail, JNDI, etc

26 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Composants J2EE Outils Applet JavaBeans JavaIDL, RMI-IIOPJAASJDBCJNDIJAXP EJBJSPServlet JTA/JTS JavaMailJMS Connecteurs Container J2EE BluePrint Java 2 SDK – Edition standard JavaBeans Web Transaction MessagerieGuide de programmation Mail CORBA Sécurité Base de données Nommage & Répertoire XML

27 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles 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 dannuaire 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 daccès JAXP 1.1 : gestion de documents XML

28 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles 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

29 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Cycle de vie dune servlet Code Servlet Serveur Chargement Code Servlet Serveur Déchargement Code Servlet Serveur Client Traitement des requêtes clientes par thread init() : initialisation de la servlet chargement du code. Souvent effectué lors de la première requête cliente (doGet, doPost) Allocation dun 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 servlet par le serveur

30 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles HTTP 1.0 Requête Réponse HTTP/ OK Mime-version: 1.0 Content-type: text/html GET /home.html HTTP/1.0 User-Agent: Mozilla/4.0 Accept: image/gif, image/jpeg, text/*, */* Servlet Service( req,rep)

31 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles API Servlet import javax.servlet.*; import javax.servlet.http.*;

32 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles 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 ladresse IP du client String adresseDistante = requete.getRemoteAddr () ; // Imprime la page HTML out.println(" ") ; out.println(" Bienvenue ! ") out.println(" Bonjour ! ") ; out.println("Votre adresse IP est identifié comme : " + adresseDistante + ".") ; out.println( ") ; }

33 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles 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 XML basé sur des balises

34 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Directives Balise de déclaration Balise daffichage Balise de scriplet Balise de directive Balise daction

35 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles API JSP import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*;

36 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Programmation JSP

37 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles 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 dun fichier XML. Les classes Java suivent un certains nombre de règles et fournissent des callbacks comme définis dans lenvironnement J2EE et les spécifications EJB.

38 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Container EJB Un container EJB est un environnement dexécution pour un composant EJB. Un EJB sexécute sur un container EJB. Un container EJB sexécute par un serveur dapplications et prend la responsabilité des problèmes au niveau système Le container EJB gère le cycle de vie de lEJB. 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

39 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Beans entité Un bean entité est un objet persistant Un 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.

40 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Beans session Un bean session pour chaque client Il y a deux types de beans session sans état pas d état entre les invocations rapide et efficace avec état maintient les états entre les invocations persistance limitée

41 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Structure EJB Interface home fournit un moyen pour le client EJB de récupérer une instance dun EJB Interface distante expose les méthodes que le client EJB peut utiliser Code EJB implémente linterface distante et linterface EJB approprié (SessionBean ou EntityBean par exemple)

42 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles API EJB import javax.ejb.* ; import javax.ejb.spi.* ;

43 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles 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; }

44 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles 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(){…} }

45 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles JavaBeans Activation Framework (JAF) Les services dactivation 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 dentrée

46 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles API JAF import javax.activation.* ;

47 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Java Data Base Connectivity (JDBC) JDBC permet aux applications daccéder à des SGBD relationnels et de manipuler des données provenant de ces bases API Java Calqué sur ODBC de Microsoft Implémente le standard CLI de lX/OPEN

48 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Pilotes JDBC Type 1 : Pont JDBC-ODBC fournit un accès JDBC API par lintermédiaire dun ou plusieurs pilotes ODBC. Type 2 : A native-API partly Java technology-enabled driver convertit les appels JDBC en un applet sur lAPI 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

49 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles 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 constructeurdépendant du constructeur natif côté client Ecoute distante

50 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles API JDBC import java.sql.*;

51 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Programmation JDBC private void executer (String driver, String chaine_connexion, String login, String password) { // On charge le driver Class.forName (driver) ; // on se connecte conn = DriverManager.getConnection (chaine_connexion, login, password) ; // on initialise le curseur stmt = conn.createStatement () ; // execution dune chaine SQL sur le SGBD String 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 () ; }

52 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles RMI-IIOP, RMI-JRMP, CORBA RMI et CORBA sont des architectures complexes permettant dinvoquer un objet distant géré par une autre machine virtuelle comme sil était local. CORBA : générique langage objets RMI : spécifique à Java GIOP IIOP TCP/IP RMI

53 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Remote method Invocation (RMI) Objet distant localisé par lAPI JNDI Registre associe au nom objet une référence stub représente linterface sur le client. Agit comme proxy de lobjet distant squelette (skeleton) sur le serveur pour recevoir les messages et invoquer lobjet serveur Génération de stub et skeleton à laide de rmic Couche de référence distante Couche transport RMI TCP/IP Interface RMI Stub RMI Squelette RMI client RMI serveur RMI

54 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles 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 ;cest une couche transport décrivant comment les messages GIOP sont transmis au dssus de TCP/IP.

55 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Architecture CORBA Portable Object Adapter (POA) Object Request Broker (ORB ) Client reférence objet reférence objet Serveur ORB

56 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles API CORBA, RMI import javax.rmi.* ; import javax.rmi.CORBA ; import org.omg.CORBA.* ; // RMI-IIOP, IDL import org.omg.CosNaming.* ; // RMI-IIOP, IDL

57 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles 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 + " !" ;} }

58 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles // Enregistre lobjet 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'") ; }

59 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles // 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 + ".") ; }

60 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Java Naming and Directory Interface (JNDI) JNDI permet daccéder à de nombreux services de noms et dannuaire. En utilisant JNDI, un objet Java peut stocker et récupérer des objets de nimporte quel type JNDI fournit des méthodes pour effectuer nimporte 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 dannuaires 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

61 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Système de fichiers Architecture JNDI Application Java API JNDI Gestionnaire de nommages et dannuaire JNDI SPI SPI Système de fichiers SPI nommage CORBA SPI LDAP SPI RMIAutres SPI Système de fichiers Services LDAP Services RMI CosNaming CORBA Autres services (DNS, NDS, NIS…)

62 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles API JNDI import javax.naming.* ; import javax.naming.directiry.* ; import javax.naming.event.* ; import javax.naming.ldap.* ; import javax.naming.spi.* ;

63 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles 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 linterface EnsCalculateur System.out.println (de.lancer (0.2, 1000, vert)); } catch (Exception e) { System.out.println(e.toString()); }

64 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Java Message Service (JMS) JMS défini un mécanisme standard permettant aux composants denvoyer 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 LAPI JMS y ajoute une API commune et un cadre de travail permettant le développement de messages portables basés en Java

65 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Synchrone envoyé une fois, non garanti datteindre le serveur perdu si non reçu Asynchrone Envoyé jusquà acquittement Mise en file dattente jusquà ce que le message soit reçu

66 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Client1 Client2 file dattente Client1 thème Envoie message Client2 Publie message Consomme Acquitte Souscrit Délivre Client3 Souscrit Délivre message

67 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Cas dutilisation de JMS Système faiblement couplé Sans connexion Supprime les dépendances entre le client et la plateforme serveur (langage de programmation, version) Publication souscription Envoie, reçoit des information avec un ou plusieurs clients non identifiés Intégration avec dautres systèmes de messageries IBM MQ-Series Microsoft Message Queue

68 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles API JMS import javax.jms.* ;

69 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Java Transaction Support/API (JTS/JTA) JTA et JTS permettent aux applications J2EE daffranchir 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 à laide détats déclaratifs dans le descripteur de déploiement. Le serveur dapplications prend la responsabilité de la gestion des transactions

70 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles 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

71 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles API JTA import javax.transaction ; import javax.transaction.xa ;

72 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles 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()); } [...]

73 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles JavaMail JavaMail 1.2 définit un ensemble dinterface de classe permettant de construire des applications sur les technologies de courrier électronique Gestion des standards de courrier SMTP : protocole de transport de courrier électronique POP : récupération du courrier sur serveur distant IMAP : gestion de boîtes aux lettres distantes MIME : standard de codage du contenu de courrier permettant notamment lattachement de documents de tout format et lutilisation de langues différentes

74 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles API JavaMail import javax.mail.* ; import javax.mail.event.* ; import javax.mail.internet.* ; import javax.mail.search.* ;

75 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Programmation JavaMail import javax.mail.*; import javax.mail.internet.*; import java.util.*; public class Send { public String SendMessage(String to, String from, String smtphost, String multipart, String msgSubject, String msgText) { String msgText2 = "multipart message"; boolean sendmultipart = Boolean.valueOf( multipart).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( from); msg.setFrom(from); InternetAddress[] address = { new InternetAddress( to) }; 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 " envoyé à " + to; }

76 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles 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 dauthentification disponibles JNDI UNIX Windows NT Kerberos KeyStore

77 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles API JAAS import javax.security.auth ; import javax.security.auth.callback ; import javax.security.auth.login ; import javax.security.auth.spi ; grant, { permission perm_class_name "target_name", "action";... permission perm_class_name "target_name", "action"; }; := Principal Principal_class "principal_name" import javax.security.* ; Java.policy

78 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles 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 () {abort // Method to abort the authentication process (phase 2). } public boolean commit() {commit // Method to commit the authentication process (phase 2). } public void initialize(Subject subject, CallbackHandler callbackHandler, Map sharedState, Map options) {initializeSubjectCallbackHandlerMap // Initialize this LoginModule. } public boolean login() { login // Method to authenticate a Subject (phase 1). } public boolean logout() {logout // Method which logs out a Subject. } grant codebase "file:SampleLoginModule.jar" { permission javax.security.auth.AuthPermission "modifyPrincipals"; };

79 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles 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"; };

80 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Java API for XML Processing (JAXP) SAX : gestion de flux dévénements XML DOM : structure de document XML en mémoire sous forme darbre XSLT : présentation de documents XML daprès des feuilles de style XSL

81 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles XML – SAX -DOM

82 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles 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 ;

83 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles 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 dobjets Java et vice versa JAXM : Java API for XML Messenging permet léchange de messages XML avec des plateformes distantes en synchrone ou asynchrone JAXR : Java API for XML Registries interface daccès aux annuaires de services applicatifs JAX-RPC : JAVA API for XML-based RPC appels à des procédures à distance avec XML

84 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Plan Architectures multi-tiers : architecture 1, 2, 3- tiers J2EE : architecture générale Composants J2EE : Servlets, JSP, EJB, JMS, JAAS, JAXP, JavaMail, JNDI, etc. Outils de développement et dintégration Produits existants Conclusion Outils de développement et dintégration

85 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles 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 dexécuter leurs applications J2EE et vérifier leur compatibilité

86 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Déploiement J2EE JAR – Java ARchive Fichier classe Java EJB WAR - Web ARchive Servlets JSP EAR - Enterprise ARchive Contient des JARs et WARs pour former une application complète Descripteurs de déploiement XML

87 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Plan Architectures multi-tiers : architecture 1, 2, 3- tiers J2EE : architecture générale Composants J2EE : Servlets, JSP, EJB, JMS, JAAS, JAXP, JavaMail, JNDI, etc. Outils de développement et dintégration Produits existants Conclusion Produits existants

88 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Serveurs J2EE Apache Tomcat, BEA WebLogic, IBM WebSphere Sun iPlanet Application Server Oracle Application Server Caucho Resin, Allaire JRun, Orion, SilverStream Application Server

89 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Plan Architectures multi-tiers : architecture 1, 2, 3- tiers J2EE : architecture générale Composants J2EE : Servlets, JSP, EJB, JMS, JAAS, JAXP, JavaMail, JNDI, etc. Outils de développement et dintégration Produits existants Conclusion

90 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Exemple dapplication en entreprise Servlet de fiches JDBC JSPSGBD soumission dune fiche de renseignement insertion de la fiche génération de page derreur Message derreur Insertion Vérification des données Construction de la requête dinsertion

91 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Exemple dapplication en entreprise Client Navigateur Compsants graphiques Compsants graphiques fichier HTML Requête HTTP Serveur Web Servlet JSP EJB Bean Session Bean Entité Bean Session Bean Entité Base de données relationnelles Mainframe JDBC Serveur dapplications Serveurs de donnes

92 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Exemple dapplication en entreprise recupérer classes Servlet de classes EJB Classes JSPJMS récupérer classes présentation liste de classes Listes de classes EIS voir notifica tions pas de notifica tions récupérer classes renvoie classes

93 vendredi 2 mai 2014 Tuyêt Trâm DANG NGOC - Université de Versailles Architecture sécurisée (JCA) Service de cryptographie Interface et classe de certificat Classe et interface de gestion de clef


Télécharger ppt "Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin Cours CNAM, le 26 novembre 2003."

Présentations similaires


Annonces Google