Java Naming and Directory Interface

Un article de Wikipédia, l'encyclopédie libre.
(Redirigé depuis JNDI)

JNDI est une API Java de connexion à des annuaires, notamment des annuaires LDAP.

Présentation[modifier | modifier le code]

JNDI 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 :
    • LDAP : un annuaire léger
    • X500 : normes d'annuaires lourdes à mettre en œuvre
    • NIS : annuaire obsolète

Usages[modifier | modifier le code]

Java EE[modifier | modifier le code]

JNDI 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[modifier | modifier le code]

Un 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[modifier | modifier le code]

Pour 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[modifier | modifier le code]

Contexte initial[modifier | modifier le code]

LDAP[modifier | modifier le code]

Les concepts JNDI et LDAP diffèrent[1] beaucoup et les noms des méthodes disponibles peuvent entrainer des confusions.

Voir aussi[modifier | modifier le code]

Liens externes[modifier | modifier le code]

Notes[modifier | modifier le code]