JNDI
Java Naming Derectory Interfaces
Benouini Rachid FST Fès 2014-2013
Plan
introduction
Les services de nommage "Naming Services"
Les annuaires "Directory Services"
JNDI et ses Objectifs
Archi...
Les services de nommage "Naming Services"
Un service de nommage permet d'associer un nom unique à un
objet et de facilite...
Les annuaires "Directory Services"
• Un annuaire est un service de nommage qui possède en plus une
représentation hiérarch...
JNDI et ses Objectifs
• JNDI est l’acronyme de Java Naming and Directory
Interface.
• Cette API fournit une interface uniq...
Architecture JNDI
Application Java
JNDI API
JNDI Naming Manager
JNDI API SPI
RMI LDAP NDS CORBA …
JNDI est composée de deu...
L’utilisation d’un service de nommage
Le contexte :
Un service de nommage permet d'associer un nom à un objet. Cette assoc...
L’utilisation d’un service de nommage
Pour pouvoir utiliser un service de nommage, il faut tout d'abord obtenir un
context...
Le stockage d'un objet
• Généralement les objets à stocker doivent être d'un type particulier,
dépendant du pilote utilisé...
L'obtention d'un objet
• Pour obtenir un objet du service de nommage, utiliser la méthode
lookup() du contexte.
Exemple :
...
Utilisation de JNDI
J2EE utilise énormément JNDI pour proposer des références vers des ressources
nécessaires aux applicat...
En résumé
• JNDI est une solution proposée par J2EE pour exporter, partager,
centraliser les paramètres d’une application ...
Prochain SlideShare
Chargement dans…5
×

JNDI Java Naming Derectory Interfaces

838 vues

Publié le

Presentation sur JNDI ( Java Naming Derectory Interfaces )

Publié dans : Logiciels
0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
838
Sur SlideShare
0
Issues des intégrations
0
Intégrations
3
Actions
Partages
0
Téléchargements
16
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

JNDI Java Naming Derectory Interfaces

  1. 1. JNDI Java Naming Derectory Interfaces Benouini Rachid FST Fès 2014-2013
  2. 2. Plan introduction Les services de nommage "Naming Services" Les annuaires "Directory Services" JNDI et ses Objectifs Architecture JNDI Architecture JNDI API Architecture JNDI SPI L’utilisation d’un service de nommage L’obtention d’un objet Le stockage d’un objet Utilisation de JNDI En résumé
  3. 3. Les services de nommage "Naming Services" Un service de nommage permet d'associer un nom unique à un objet et de faciliter ainsi l'obtention de cet objet. Il existe plusieurs types de services de nommage parmi lesquels :  DNS (Domain Name System) : service de nommage utilisé sur internet pour permettre la correspondance entre un nom de domaine et une adresse IP  NIS (Network Information System) : service de nommage réseau développé par Sun Microsystems  COS Naming (Common Object Services) : service de nommage utilisé par Corba pour stocker et obtenir des références sur des objets Corba.
  4. 4. Les annuaires "Directory Services" • Un annuaire est un service de nommage qui possède en plus une représentation hiérarchique des objets qu'il contient et un mécanisme de recherche. • Exemple d’annuaires : LDAP (Lightweight Directory Access Protocol) • Exemple de structure directory d’une entreprise : Entreprise A Les employés Employer1 Employer2 Matériels Impriment Ordinateurs Ordinateur1 Ordinateur2 Fax
  5. 5. JNDI et ses Objectifs • JNDI est l’acronyme de Java Naming and Directory Interface. • Cette API fournit une interface unique pour utiliser différents services de nommages ou d’annuaires et définit une API standard pour permettre l’accès à ces services. • JNDI propose donc une abstraction pour permettre l’accès à ces différents services de manière standard. • Ceci est possible grâce à l’implémentation de pilotes qui mettent en œuvre la partie SPI de l’API JNDI.
  6. 6. Architecture JNDI Application Java JNDI API JNDI Naming Manager JNDI API SPI RMI LDAP NDS CORBA … JNDI est composée de deux parties :  Une API utilisée pour le développement des applications  Une SPI utilisée par les fournisseurs d'une implémentation d'un pilote Packages Rôle javax.naming Classes et interfaces pour utiliser un service de nommage javax.naming.directory Etend les fonctionnalités du package javax.naming pour l'utilisation des services de type annuaire javax.naming.event Classes et interfaces pour la gestion des événements lors d'un accès à un service javax.naming.ldap Etend les fonctionnalités du package javax.naming.directory pour l'utilisation de la version 3 de LDAP javax.naming.spi Classes et interfaces dédiées aux Service Provider pour le développement de pilotes
  7. 7. L’utilisation d’un service de nommage Le contexte : 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. Il existe deux types de contexte : contexte racine et sous contexte. Exemple : C: est un contexte racine dans un système de fichiers de type Windows. Le répertoire Users (C:Users) est un sous-contexte du contexte racine qui est dans ce cas nommé sous-répertoire. Dans DNS, com est un contexte racine et test est un sous contexte (test.com), et a partir de ce contexte, il est possible de réaliser plusieurs opérations. Hashtable hashtableEnvironment = new Hashtable(); hashtableEnvironment.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory"); hashtableEnvironment.put(Context.PROVIDER_URL, "file:c:/"); Context context = new InitialContext(hashtableEnvironment);
  8. 8. L’utilisation d’un service de nommage Pour pouvoir utiliser un service de nommage, il faut tout d'abord obtenir un contexte racine qui va encapsuler la connexion au service. A partir de ce contexte, il est possible de réaliser plusieurs opérations : Tous 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 chaine de caractères : elle contient la séquence Méthode Rôle void bind(String, Object) associer un objet avec un nom void rebind(String, Object) modifier une association Object lookup(String) supprimer une association void unbind(String) obtenir un objet à partir de son nom void rename(String, String) modifier un nom d’objet NamingEnumeration listBindings(String) obtenir une liste des nom et les objets associés NamingEnumeration list(String) obtenir une liste des nom et les classes d’objets associés
  9. 9. Le stockage d'un objet • Généralement les objets à stocker doivent être d'un type particulier, dépendant du pilote utilisé : il est fréquent que de tels objets doivent implémenter une interface (java.io.Serializable, java.rmi.Remote, etc ...) • La méthode bind() permet d'associer un objet à un nom. Exemple : import javax.naming.*; ... public void createName() throws NamingException { Context context = new InitialContext(); context.bind("/config/monApplication", "valeur"); }
  10. 10. L'obtention d'un objet • Pour obtenir un objet du service de nommage, utiliser la méthode lookup() du contexte. Exemple : • Ceci peut permettre de facilement stocker des options de configuration d'une application, plutôt que de les stocker dans un fichier de configuration. C'est encore plus intéressant si le service qui stocke ces données est accessible via le réseau car cela permet de centraliser ces options de configuration. • Il peut permettre aussi de stocker des données "sensibles" comme des noms d'utilisateurs et des mots de passe pour accéder à une ressource et ainsi empêcher leur accès en clair dans un fichier de configuration. import javax.naming.*; .... public String getValeur() throws NamingException { Context context = new InitialContext(); return (String) context.lookup("/config/monApplication"); }
  11. 11. Utilisation de JNDI J2EE utilise énormément JNDI pour proposer des références vers des ressources nécessaires aux applications. Chaque conteneur J2EE utilise un service accessible via JNDI pour stocker des informations sur les applications et les composants. Ceci permet de rendre dynamique la recherche de composants de l'application Plusieurs technologies mises en œuvre dans J2EE font un usage de JNDI : par exemple JDBC, EJB, JMS, ... Dans JDBC 2.0 elle est fortement recommandée d’utilise JNDI pour stocker des objets de type DataSource qui encapsulent les informations utiles à la connexion à la source de données. Comme JDBC, JMS recommande de stocker les informations concernant les files (queues) et les sujets (topics) dans un annuaire et de les rechercher grâce à JNDI. Les EJB stockent aussi leur référence vers leur interface home dans l'annuaire du serveur d'application pour permette à un client d'obtenir une référence sur l'EJB.
  12. 12. En résumé • JNDI est une solution proposée par J2EE pour exporter, partager, centraliser les paramètres d’une application dans le cadre d’un projet ou d’une entreprise. Il s’agit d’une base de données objet arborescente dont chaque répertoire peut utiliser une technologie différente. Certains répertoires sont spéciaux et permettent d’exploiter la même technologie pour des paramètres spécifiques à une application ou à un serveur d’application. • JNDI est généralement utilisé pour découvrir ou publier des EJB. Cela s’effectuant sans code particulier.

×