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

CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV J2EE / JNDI Module Java Expert.

Présentations similaires


Présentation au sujet: "CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV J2EE / JNDI Module Java Expert."— Transcription de la présentation:

1 CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV J2EE / JNDI Module Java Expert

2 Module J2EE/JNDI Page 2 / 34 Deruelle Laurent Copyright © 2002 Laurent Deruelle Module Java n Vue densemble du langage Java n Le langage Java : syntaxe et sémantique n Programmation multi-tâche : les threads n Accéder aux bases de données n Composants réutilisables : le modèle MVC n Développement Client/Serveur n Présentation dun IDE : WSAD / Forté / JBuilder n Les serveurs dapplications J2EE n Les Enterprise JavaBeans n Ré-ingénierie dapplications Java

3 Module J2EE/JNDI Page 3 / 34 Deruelle Laurent Copyright © 2002 Laurent Deruelle Naming Service n Associer des noms aux objets (bind) n Récupérer les objets par leur nom (resolve) n nom de fichier ==> octets sur le disque n Exemples: –RMI Registry –CORBA Naming Service (COSNaming) –Domain Name Service (DNS) –système de fichiers

4 Module J2EE/JNDI Page 4 / 34 Deruelle Laurent Copyright © 2002 Laurent Deruelle Contextes n Contient un ensemble de liaisons (binding) et des opérations de recherche (lookup) n Possède ses propres convention de nommage n Exemples –Système de répertoire :/ –domaine DNS :edu –LDAP: c=us n Système de nommage est un ensemble de contextes –noms dun système particulier = espace de nommage (namespace)

5 Module J2EE/JNDI Page 5 / 34 Deruelle Laurent Copyright © 2002 Laurent Deruelle Noms n Identificateur assigné à un objet n localhost ==> 127.0.0.1 n Convention de nommage définie par le système de nommage –/rép/rép2/file pour UNIX –disque:\rép\string pour DOS –cn=dan, o=ISP pour LDAP –www-lil.univ-littoral.fr pour DNS

6 Module J2EE/JNDI Page 6 / 34 Deruelle Laurent Copyright © 2002 Laurent Deruelle Noms (suite) n Nom Atomique –nom utilisé dans une liaison –Possède un sens uniquement dans un contexte –Ex. nom de fichier dans un répertoire n Nom composé –séquence de noms atomiques –/usr/bin/ls –conforme à la convention de nommage

7 Module J2EE/JNDI Page 7 / 34 Deruelle Laurent Copyright © 2002 Laurent Deruelle Names (Cont) n Nom composite –Couvre de multiple systèmes de nommage –http://www.apl.jhu.edu/~deruelle/ URL id: http DNS: www.apl.jhu.edu UNIX et serveur web: /usr/deruelle/public_html n Résolution Object o = ctx.lookup(usr/deruelle/public_html);

8 Module J2EE/JNDI Page 8 / 34 Deruelle Laurent Copyright © 2002 Laurent Deruelle Objectifs de JNDI n Proposer une API pour accéder à différents noms. n Différents noms peuvent être combinés dans une seul système logique. n De nouvelles implémentations de services de nommage peuvent être ajoutées sans modifications du client.

9 Module J2EE/JNDI Page 9 / 34 Deruelle Laurent Copyright © 2002 Laurent Deruelle Architecture JNDI API JNDI Interface JNDI de fournisseurs de service Application Cliente Java Manager de nommage JNDI DNS LDAP CORBA RMI autres

10 Module J2EE/JNDI Page 10 / 34 Deruelle Laurent Copyright © 2002 Laurent Deruelle Architecture JNDI n Application Programming Interface (API) –API pour les programmeurs dapplications clientes –interface Unifiée n Service Provider Interface (SPI) –Pour les vendeurs permettant un accès JNDI à leur service de nommage

11 Module J2EE/JNDI Page 11 / 34 Deruelle Laurent Copyright © 2002 Laurent Deruelle JNDI API n Incluse dans le Java 2 SDK v 1.3 n Doit être téléchargé pour les JDK 1.1 et JDK 1.2 n Packages –javax.naming –javax.naming.directory –javax.naming.event –javax.naming.ldap –javax.naming.spi

12 Module J2EE/JNDI Page 12 / 34 Deruelle Laurent Copyright © 2002 Laurent Deruelle Service Providers n Implémentation des produits sous-jacents n Incluses dans Java 2 SDK 1.3 –LDAP –COSNaming –JNDI over RMI Registry n Doit être téléchargé pour les versions précédentes –http://java.sun.com/products/jndi/

13 Module J2EE/JNDI Page 13 / 34 Deruelle Laurent Copyright © 2002 Laurent Deruelle JNDI Providers n LDAP –com.novell.naming.service.nds.NdsInitialContextFactory n NIS –com.sun.jndi.nis.NISCtxFactory n NIS+ (future) n RMI –com.sun.jndi.rmi.registry.RegistryContextFactory n COSNaming n Fichies –com.sun.jndi.fscontext.[Ref]FSContextFactory

14 Module J2EE/JNDI Page 14 / 34 Deruelle Laurent Copyright © 2002 Laurent Deruelle Configuration n Pour 1.3, rien à faire. JNDI devrait être inclus dans la distribution avec 3 fournisseurs n Pour Java 2 SDK version 1.2 –jndi.jar in $JAVA_HOME/jre/lib/ext n Pour jdk 1.1 –Ajouter jndi.jar au CLASSPATH

15 Module J2EE/JNDI Page 15 / 34 Deruelle Laurent Copyright © 2002 Laurent Deruelle Quelques produits LDAP n accessible publiquement : –ldap://ldap.Bigfoot.com –ldap://ldap.four11.com –ldap://ldap.InfoSpace.com

16 Module J2EE/JNDI Page 16 / 34 Deruelle Laurent Copyright © 2002 Laurent Deruelle Tâches Communes JNDI n Obtenir une référence au contexte initial (InitialContext) n Opérations sur le contexte –Lister les fils dun contexte –Lier (Bind) des noms à des objets –rechercher (Lookup) des objets via leur nom –Créer/détruire des contextes –Note: NamingException peut être envoyée pour la plupart des opérations de contexte.

17 Module J2EE/JNDI Page 17 / 34 Deruelle Laurent Copyright © 2002 Laurent Deruelle Contextes JNDI

18 Module J2EE/JNDI Page 18 / 34 Deruelle Laurent Copyright © 2002 Laurent Deruelle Obtenir un contexte initial import javax.naming.*; // non nécessaire pour les serveurs dapplications J2EE java.util.Properties props = new java.util.Properties(); props.put(Context.INITIAL_CONTEXT_FACTORY, com.sun.jndi.fscontext.RefFSContextFactory); props.put(Context.PROVIDER_URL, file:///); //obligatoire pour toutes les applications Context initContext = new InitialContext( props );

19 Module J2EE/JNDI Page 19 / 34 Deruelle Laurent Copyright © 2002 Laurent Deruelle Contexte initial n Point de départ dans lespace de noms. n Toutes les opérations exécutées sont relatives au contexte initial. n Spécifier le fournisseur de service à laide de la propriété : props.put(Context.INITIAL_CONTEXT_FACTORY, com.sun.jndi.fscontext.RefFSContextFactory );

20 Module J2EE/JNDI Page 20 / 34 Deruelle Laurent Copyright © 2002 Laurent Deruelle Contexte initial (suite) n Spécifier les propriétés spécifiques au fournisseur n LDAP props.put(Context.PROVIDER_URL, ldap://host:port); props.put(Context.SECURITY_PRINCIPAL, user ); props.put(Context.SECURITY_CREDENTIALS, password); n Système de fichier props.put(Context.PROVIDER_URL, file://tmp/); n Créer le contexte initial InitialContext initContext = new InitialContext( props ); –Création sans paramètres provoque la recherche dun fichier jndi.properties, indiquant lAPI JNDI et lespace de nommage à utiliser

21 Module J2EE/JNDI Page 21 / 34 Deruelle Laurent Copyright © 2002 Laurent Deruelle Lister les fils NamingEnumeration children = initContext.list(); while( children.hasMore() ) { NameClassPair nc = (NameClassPair) children.next(); System.out.println(nc.getName()); System.out.println(nc.getClassName()); } n list() renvoie un NamingEnumeration dobjets NameClassPair n listBindings() renvoie un NamingEnumeration des objets liés

22 Module J2EE/JNDI Page 22 / 34 Deruelle Laurent Copyright © 2002 Laurent Deruelle NameClassPair and Binding javax.naming.NameClassPair getClassName() : String getName() : String javax.naming.Binding getObject() : Object Représente une association entre un name et un objet Représente le nom et la classe dun objet lié à un contexte

23 Module J2EE/JNDI Page 23 / 34 Deruelle Laurent Copyright © 2002 Laurent Deruelle NamingEnumeration n Spécialise la collection java.util.Enumeration. n Envoie une exception lorsque il ny a plus dentrées dans lénumération. n Permet des résultats partiels qui sont renvoyés et une exception suite à un accès invalide: –i.e. hasMore() renverra une exception

24 Module J2EE/JNDI Page 24 / 34 Deruelle Laurent Copyright © 2002 Laurent Deruelle Lier des noms à un objet n Lier un nom à un objet à l'intérieur dun contexte File f = new File(/tmp/dan); tmpDirContext.bind(dan, f ); n NameAlreadyBoundException est envoyée si le nom dan est déjà lié dans le contexte tmp. n Peut utiliser unbind() ou rebind()

25 Module J2EE/JNDI Page 25 / 34 Deruelle Laurent Copyright © 2002 Laurent Deruelle Recherche dun objet n Rechercher un objet dans un contexte –String name; Object o = initContext.lookup(name); –le nom peut être composé : –/usr/tmp/dir/myfile –les séparateurs ne sont pas standardisés ! –La classe renvoyée est chargée par le fournisseur !

26 Module J2EE/JNDI Page 26 / 34 Deruelle Laurent Copyright © 2002 Laurent Deruelle Paramètre Name n Les opérations de contexte peuvent prendre une String ou un Name dans le paramètre name. n Name –Séquence ordonnée de composants –Noms Composés –Noms Composites n String –Représente un nom composite

27 Module J2EE/JNDI Page 27 / 34 Deruelle Laurent Copyright © 2002 Laurent Deruelle Exceptions de nommage catch( NamingException e ) { } n Méthodes importantes –toString() : String –getRootCause() : Throwable –getRemainingName() : Name –getExplanation() : String

28 Module J2EE/JNDI Page 28 / 34 Deruelle Laurent Copyright © 2002 Laurent Deruelle javax.naming.Context bind(String name, Object obj) createSubcontext(String name) : Context list(String name) : NamingEnumeration listBindings(String name) : NamingEnumeration lookup(String name) : Object > javax.naming.InitialContext InitialContext() InitialContext(java.util.Hashtable env) javax.naming.directory.InitialDirContext InitialDirContext() InitialDirContext(Hashtable env) javax.naming.directory.DirContext getAttributes() : Attributes search(String name, Attributes matchingAttributes) : NamingEnumeration >

29 Module J2EE/JNDI Page 29 / 34 Deruelle Laurent Copyright © 2002 Laurent Deruelle Attributs de contexte n Attributs Commun LDAP c = Country o = Organization ou = Organizational Unit cn = Common Name (premier ou nom complet) sn = Users surname (surnom utilisateur)

30 Module J2EE/JNDI Page 30 / 34 Deruelle Laurent Copyright © 2002 Laurent Deruelle JNDI and RMI n Propose une interface standard pour le registre RMI Properties props = new Properties(); props.put(Context.INITIAL_CONTEXT_FACTORY, com.sun.jndi.rmi.registry.RegistryContextFactory); props.put(Context.PROVIDER_URL, rmi://host:port); Context ctx = new InitialContext(props); ctx.rebind(Teller, unObjetRMI ); …….. Teller t = (Teller) ctx.lookup(Teller);

31 Module J2EE/JNDI Page 31 / 34 Deruelle Laurent Copyright © 2002 Laurent Deruelle JNDI et JDBC n Sources de données JDBC (DataSource) –Evolutions du gestionnaire de Driver JDBC –Stockées dans larborescence JNDI –Permettent le pool de connexion –Méthodes dun objet DataSource ds : Connection conn = ds.getConnection(String name, String password ) conn.close()

32 Module J2EE/JNDI Page 32 / 34 Deruelle Laurent Copyright © 2002 Laurent Deruelle JNDI et EJB n Objet Home pour un EJB est stocké dans JNDI n Afin de créer un bean: InitialContext ic = new InitialContext( props ); TellerHome th = (TellerHome) ic.lookup(TellerHome);

33 Module J2EE/JNDI Page 33 / 34 Deruelle Laurent Copyright © 2002 Laurent Deruelle JNDI et les applications J2EE n InitialContext –fourni par le Container –accédé par un composant en utilisant le constructeur par défaut. InitialContext rootCtx = new InitialContext(); n Propriétés –fournies au Container à laide du descripteur de déploiement –accédées par un composant à travers un contexte spécial Object object = rootCtx.lookup(java:comp/env/monObjet);

34 Module J2EE/JNDI Page 34 / 34 Deruelle Laurent Copyright © 2002 Laurent Deruelle En résumé Les applications clientes JNDI peuvent accéder à des ressources telles que: –imprimantes –fax –bases de données (JDBC 2.0) –références dobjet qui sont contenues dans de multiples implémentations des services de nommage et en utilisant la même API.


Télécharger ppt "CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV J2EE / JNDI Module Java Expert."

Présentations similaires


Annonces Google