Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parÉlise Viau Modifié depuis plus de 9 années
1
JNDI, dernière mise à jour : vendredi 29 septembre 2006 © Franck.Barbier@FranckBarbier.com - groupe de recherche PauWare1Franck.Barbier@FranckBarbier.com Java Naming and Directory Interface (JNDI) Franck Barbier Université de Pau et des Pays de l’Adour
2
JNDI, dernière mise à jour : vendredi 29 septembre 2006 © Franck.Barbier@FranckBarbier.com - groupe de recherche PauWare2Franck.Barbier@FranckBarbier.com Nommage La gestion des ressources des systèmes distribués impose leur identification aisée et précise, leur localisation et leur accès par nommage en particulier Internet par exemple est fondé sur une nomenclature qui gouverne le nommage des sites : c’est le DNS ou Domain Name System (e.g. www.FranckBarbier.com) Il existe deux supports de base pour la gestion du nommage : les services de nommage proprement dit (e.g., DNS) et les services de gestion d’annuaire (e.g., la norme X.500 et son implantation standard mais « allégée » qui est LDAP pour Lightweight Directory Access Protocol)
3
JNDI, dernière mise à jour : vendredi 29 septembre 2006 © Franck.Barbier@FranckBarbier.com - groupe de recherche PauWare3Franck.Barbier@FranckBarbier.com Exemples de besoins en nommage Environnement d’imprimantes et leurs capacités/possibilités/qualités d’impression en s’affranchissant des serveurs d’impression (pilote d’impression, file d’attente…) Les annuaires, pages blanches, pages jaunes… Les fichiers qui existent physiquement sur des machines différentes mais dont l’accès et la manipulation logiques doivent être transparents et simplifiés Les composants et services logiciels dont la localisation et la composition dynamique dans des applications nécessitent l’identification sure, rapide et fréquente Les utilisateurs des systèmes distribués avec en particulier leurs propriétés « système » telles que e-mail, home page…
4
JNDI, dernière mise à jour : vendredi 29 septembre 2006 © Franck.Barbier@FranckBarbier.com - groupe de recherche PauWare4Franck.Barbier@FranckBarbier.com Gestion du nommage et programmation J2SE fournit en standard une API complète pour la gestion du nommage : JNDI Cette technologie Java est un support complet pour DNS, LDAP, RMI, CORBA… Elle autorise par exemple la gestion des URLs (Uniform Resource Locators) du Web comme des noms simples ou composites ; on trouve ainsi les interfaces et classes Java : javax.naming.Name, javax.naming.CompositeName et javax.naming.CompoundName
5
JNDI, dernière mise à jour : vendredi 29 septembre 2006 © Franck.Barbier@FranckBarbier.com - groupe de recherche PauWare5Franck.Barbier@FranckBarbier.com Java Naming and Directory Interface (JNDI) http://java.sun.com/products/jndi/ Package clef : javax.naming Livre : JNDI API Tutorial and Reference: Building Directory-Enabled Java™ Applications, Rosanna Lee and Scott Seligman, Addison Wesley, 2000 Voir aussi http://www.ietf.org ( The Internet Engineering Task Force ) pour les spécifications
6
JNDI, dernière mise à jour : vendredi 29 septembre 2006 © Franck.Barbier@FranckBarbier.com - groupe de recherche PauWare6Franck.Barbier@FranckBarbier.com Architecture de JNDI Novell
7
JNDI, dernière mise à jour : vendredi 29 septembre 2006 © Franck.Barbier@FranckBarbier.com - groupe de recherche PauWare7Franck.Barbier@FranckBarbier.com Service Provider Un fournisseur de service JNDI doit implémenter toutes les interfaces composant la norme. Les services de base sont en général inclus dans J2SE et il est possible de créer son propre service JNDI-compliant. Voici quelques cas : LDAP (inclus dans J2SE depuis SDK 1.4.0), voir aussi http://www.openldap.org/ pour déployer un serveur RMI Registry (inclus dans J2SE) DNS (inclus dans J2SE depuis SDK 1.3.0) File System (à télécharger) Windows Registry (à télécharger) Etc. Voir aussi http://java.sun.com/products/jndi/serviceproviders.html
8
JNDI, dernière mise à jour : vendredi 29 septembre 2006 © Franck.Barbier@FranckBarbier.com - groupe de recherche PauWare8Franck.Barbier@FranckBarbier.com Ce package est réservé aux développeurs qui créent un service conforme à JNDI pour traiter d’une technologie particulière. Par exemple, JNDI2R est une réalisation de la société SCAND pour accéder et manipuler le registre de Windows (9x -> XP) en Java Le package javax.naming.spi contient les interfaces que doit implémenter un Service Provider pour offrir un point d’entrée JNDI à une technologie donnée Package Java du Service Provider
9
JNDI, dernière mise à jour : vendredi 29 septembre 2006 © Franck.Barbier@FranckBarbier.com - groupe de recherche PauWare9Franck.Barbier@FranckBarbier.com L’interface javax.naming.Context est l’interface clef de JNDI. Elle définit spécialement les opérations de base pour gérer les objets nommés composés du nom lui- même et de sa liaison (binding). Les liaisons JNDI sont vues comme des objets Java possédant un type qui souvent peut être découvert à l’exécution. Par exemple, un composant logiciel EJB verra sa localisation JNDI retourner un objet d’un type conforme à sa Home Interface. Ce type varie selon le domaine traité : le File System retourne lui par exemple des contextes ou des fichiers (java.io.File) Interface javax.naming.Context
10
JNDI, dernière mise à jour : vendredi 29 septembre 2006 © Franck.Barbier@FranckBarbier.com - groupe de recherche PauWare10Franck.Barbier@FranckBarbier.com Organisation des classes et interfaces Java autour de Context Autres interfaces non encore implémentées à ce jour : EventContext, EventDirContext
11
JNDI, dernière mise à jour : vendredi 29 septembre 2006 © Franck.Barbier@FranckBarbier.com - groupe de recherche PauWare11Franck.Barbier@FranckBarbier.com Interface Name JNDI définit une représentation standard sous forme de chaîne de caractères des noms composites. Cette représentation est la concaténation des composants d’un composite de la gauche vers la droite en utilisant un séparateur (le slash ou /) pour distinguer chaque élément
12
JNDI, dernière mise à jour : vendredi 29 septembre 2006 © Franck.Barbier@FranckBarbier.com - groupe de recherche PauWare12Franck.Barbier@FranckBarbier.com Configuration d’un contexte avant ouverture Paramètre de configuration : INITIAL_CONTEXT_FACTORY java.util.Properties p = new java.util.Properties(); p.setProperty(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.FSContextFactory"); // File System Service Provider /* or p.setProperty(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.fscontext.Re fFSContextFactory"); // File System Service Provider */
13
JNDI, dernière mise à jour : vendredi 29 septembre 2006 © Franck.Barbier@FranckBarbier.com - groupe de recherche PauWare13Franck.Barbier@FranckBarbier.com Classes pour le service File System implements javax.naming.Context
14
JNDI, dernière mise à jour : vendredi 29 septembre 2006 © Franck.Barbier@FranckBarbier.com - groupe de recherche PauWare14Franck.Barbier@FranckBarbier.com Version « light » de la norme X.500 de l’OSI (Directory Service ou service d’annuaire) qui tourne au dessus du protocole TCP/IP Organisation dépendante d’une base de données (X.500 Directory Information Base) plutôt dédiée à des opérations de « lecture seule » et des accès sécurisés Concepts clefs de X.500 : les « entrées » qui ont un DN pour Distinguished Name (i.e., un identifiant) et qui sont structurées selon un DIT ou Directory Information Tree LDAP
15
JNDI, dernière mise à jour : vendredi 29 septembre 2006 © Franck.Barbier@FranckBarbier.com - groupe de recherche PauWare15Franck.Barbier@FranckBarbier.com En tant que protocole, LDPA définit un format de transport des données, des opérations de base comme « chercher », « comparer »… Les mécanismes de recherche sont associés à des filtres/contrôles. Exemple (les personnels de l’UPPA situés à Mont de Marsan et ayant la chaîne de caractères « anc » dans leur nom de famille) : String filterExp = "(&(!(givenName=*anc*))(uppaSite~=mont de marsan))"; NamingEnumeration ne = lc.search("ou=people",filterExp,null); // lc est de type com.sun.jndi.ldap.LdapCtx while(ne.hasMore()) System.out.println(ne.next().toString()); La classe javax.naming.directory.SearchControls est un moyen de personnalisation et d’optimisation des recherches : nombre limite d’entrées retournées, temps limite de recherche, profondeur de la recherche… LDAP, aspects étendus
16
JNDI, dernière mise à jour : vendredi 29 septembre 2006 © Franck.Barbier@FranckBarbier.com - groupe de recherche PauWare16Franck.Barbier@FranckBarbier.com Format des données des annuaires LDIF (Lightweight Data Interchange Format) : format d’échange des gestionnaires de messagerie comme ceux intégrés dans Mozilla par exemple (voir fonctions export/import) Directory Services Markup Language (DSML) : c’est une définition de schéma XML pour l’accès et la manipulation ouverts d’informations d’annuaires via des protocoles communs tels que HTTP ou SMTP DSML dispose depuis peu d’un frontal JNDI
17
JNDI, dernière mise à jour : vendredi 29 septembre 2006 © Franck.Barbier@FranckBarbier.com - groupe de recherche PauWare17Franck.Barbier@FranckBarbier.com Machine hôte : ldap.univ-pau.fr (port par défaut : 389) avec miroir : scinfe100.univ-pau.fr Accès basé SSL : ldaps://crisv1.univ-pau.fr:636 (nécessité de certificat) Exemple de DN : uid=barbier,ou=people,dc=univ- pau,dc=fr Package Java spécifique : javax.naming.directory Serveur LDAP : un exemple
18
JNDI, dernière mise à jour : vendredi 29 septembre 2006 © Franck.Barbier@FranckBarbier.com - groupe de recherche PauWare18Franck.Barbier@FranckBarbier.com DIT de ldap://ldap.univ-pau.fr
19
JNDI, dernière mise à jour : vendredi 29 septembre 2006 © Franck.Barbier@FranckBarbier.com - groupe de recherche PauWare19Franck.Barbier@FranckBarbier.com Toutes les entrées LDAP sont typées (à ne pas confondre avec les types Java des objets nommés lorsqu’ils sont manipulés « programmatiquement ») : Le type d’un objet (eduPerson par exemple qui un type LDAP) précise formellement les attributs obligatoires et optionnels qui peuvent être associés à une entrée donnée (e.g., uid=barbier,ou=people,dc=univ- pau,dc=fr) ayant ce type Typage des données LDAP
20
JNDI, dernière mise à jour : vendredi 29 septembre 2006 © Franck.Barbier@FranckBarbier.com - groupe de recherche PauWare20Franck.Barbier@FranckBarbier.com Schéma retenu pour ldap://ldap.univ-pau.fr
21
JNDI, dernière mise à jour : vendredi 29 septembre 2006 © Franck.Barbier@FranckBarbier.com - groupe de recherche PauWare21Franck.Barbier@FranckBarbier.com LDAP : propriétés de type Structural. Indicates the attributes that the entry may have and where each entry may occur in the DIT Auxiliary. Indicates the attributes that the entry may have Abstract. Indicates a "partial" specification in the object class hierarchy; only structural and auxiliary subclasses may appear as entries in the directory
22
JNDI, dernière mise à jour : vendredi 29 septembre 2006 © Franck.Barbier@FranckBarbier.com - groupe de recherche PauWare22Franck.Barbier@FranckBarbier.com Schema Class Definition pour ldap://ldap.univ-pau.fr
23
JNDI, dernière mise à jour : vendredi 29 septembre 2006 © Franck.Barbier@FranckBarbier.com - groupe de recherche PauWare23Franck.Barbier@FranckBarbier.com LDAP 3.0 API étendue dans le package javax.naming.ldap Factory : com.sun.jndi.ldap.LdapCtxFactory (idem LDAP standard) Concepts d’« opération étendue », de « contrôle » et de « notification non sollicitée » Instrumentation via l’interface javax.naming.ldap.Control par exemple pour la notion de contrôle Exemple d’opération étendue : « recherche avec tri »
24
JNDI, dernière mise à jour : vendredi 29 septembre 2006 © Franck.Barbier@FranckBarbier.com - groupe de recherche PauWare24Franck.Barbier@FranckBarbier.com DNS Factory : com.sun.jndi.dns.DnsContextFactory DIT du DNS
25
JNDI, dernière mise à jour : vendredi 29 septembre 2006 © Franck.Barbier@FranckBarbier.com - groupe de recherche PauWare25Franck.Barbier@FranckBarbier.com JNDI et CORBA Le service de nommage de CORBA ou CosNaming est natif dans la plate-forme J2SE. Le package clef est org.omg.CosNaming La mise en œuvre via JNDI est possible grâce à la Factory suivante (également native) : com.sun.jndi.cosnaming.CNCtxFactory L’implémentation de l’interface javax.naming.Context est com.sun.jndi.cosnaming.CNCtx Exemple : _p = new java.util.Properties(); _p.setProperty(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.cosnaming.CNCtxFactory"); _p.setProperty(Context.PROVIDER_URL,"iiop://localhost:1170"); _ic = new InitialContext(_p);
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.