Java Naming and Directory Interface
JNDI est une API Java de connexion à des annuaires, notamment des annuaires LDAP.
Présentation
modifierJNDI signifie Java Naming and Directory Interface, cette API permet :
- d’accéder à différents services de nommage ou de répertoire de façon uniforme ;
- d'organiser et rechercher des informations ou des objets par nommage (java naming and directory interface) ;
- de faire des opérations sur des annuaires (java naming and directory interface) tels que :
Usages
modifierJava EE
modifierJNDI est très utilisée dans l'univers des serveurs d'applications Java et fait partie de l'ensemble des APIs Java EE où il permet de lier un nom (par exemple 'base/sql/login') à une information.
JNDI utilise principalement les packages :
- javax.naming.*
- javax.naming.directory.*
Concepts
modifierUn service de nommage permet d'associer un nom à un objet. Cette association est nommée binding. Un ensemble d'associations nom/objet est nommé un contexte.
Ce contexte est utilisé lors de l'accès à un élément contenu dans le service.
Il existe deux types de contexte :
- Contexte racine
- Sous contexte
Un sous-contexte est un contexte relatif à un contexte racine.
Par exemple, c:\ est un contexte racine dans un système de fichiers de type Windows. Le répertoire windows est un sous contexte du contexte racine (C:\windows) qui est dans ce cas nommé sous répertoire.
Dans DNS, com est un contexte racine et test est un sous contexte (test.com)
Utilisation
modifierPour pouvoir utiliser un service de nommage, il faut tout d'abord obtenir un contexte racine qui va encapsuler la connexion au service.
À partir de ce contexte, il est possible de réaliser plusieurs opérations :
- bind : associer un objet avec un nom
- rebind : modifier une association
- unbind : supprimer une association
- lookup : obtenir un objet à partir de son nom
- list : obtenir une liste des associations
Toutes les opérations possèdent deux versions surchargées attendant respectivement :
- Un objet de type Name : cet objet encapsule une séquence ordonnée de un ou plusieurs éléments (l'intérêt de cette classe est de permettre la manipulation individuelle de chaque élément).
- Une chaîne de caractères : elle contient la séquence
Architecture
modifierContexte initial
modifierLDAP
modifierLes concepts JNDI et LDAP diffèrent[1] beaucoup et les noms des méthodes disponibles peuvent entrainer des confusions.