JNDI

Java Naming and Directory Interface : interface de nommage et d'annuaire.

Besoin

Définir une API Java standard d'accès aux annuaires et services de nommage.

Conception

JNDI est structurée en :

JNDI est donc indépendante du véritable annuaire ou service de nommage sous-jaçent. Afin de trouver ce service et communiquer avec celui-ci, elle a besoin d'au moins 2 informations :

JNDI est incluse dans J2SE depuis J2SE 1.3.

Implémentation

JNDI utilise le package standard javax.naming.

Les noeuds dans l'arbre de nommage sont représentés par l'interface Context. Une implémentation particulière d'un contexte est l'InitialContext, responsable d'établir la communication initiale avec le service en question. A son instanciation, ce contexte initial va rechercher les propriétés java.naming.factory.initial et java.naming.provider.url dans des propriétés Java :

  1. fournies en argument du constructeur
  2. à défaut, les propriétés système Java (initialisées au démarrage de la JVM via java -Djava.naming.factory.initial=<em>telleValeur</em> -Djava.naming.provider.url=<em>telleAutreValeur</em>ou par programmation via System.setProperty())
  3. à défaut lues depuis un fichier jndi.properties accessible dans le classpath

Exemples

Un exemple de connexion à un annuaire LDAP de Sun est :

Properties namingProperties = new Properties();<br> namingProperties.put (<strong>Context</strong>.<strong><strong>INITIAL_CONTEXT_FACTORY</strong>, </strong><span class="codeString">"com.sun.jndi.ldap.LdapCtxFactory<strong>"</strong></span>);<br> namingProperties.put (<strong>Context</strong>.<strong>PROVIDER_URL, </strong><span class="codeString">"ldap://myldaphost:389/o=javaromeCorp"</span>);<br> InitialContext namingContext = new InitialContext(namingProperties);

Notes

Limitations

Exemples

Des exemples de pilotes JNDI sont :

Voir aussi