JNDI ("Java Naming Directory Interface") es una especificación que permite localizar información en distintos directorios distribuidos (como NDS de Novell), directorios LDAP (como OpenLDAP) o servicios CORBA "(COS)Corba Object Service".Debido a la importancia que tienen los servicios antes mencionados en sistemas empresariales, JNDI es una herramienta que cobrará gran importancia en este tipo de desarrollos
En la sección de LDAP se mencionó el diseño de un cliente LDAP el cual es utilizado para autorizar usuarios en un sistema de computo. La principal deficiencia de este cliente LDAP es la inhabilidad de realizar búsquedas o autorización en otros sistemas que puedan contener información de usuarios o contraseñas.(Como NDS de Novell o ADS).
En la mayoría de las empresas este suele ser el caso: la existencia de diversos depósitos de información sin ninguna uniformidad para accesarlos, obviamente el escribir diversos clientes para realizar búsquedas en los distintos sistemas empresariales no seria imposible pero si una labor ardua. Debido a esto surgió JNDI.
Mediante JNDI se definen varios estándares para realizar búsquedas en diversos sistemas de información como LDAP Servers, NDS, COS. Observe el diagrama:
Los diversos vendedores de directorios distribuidos y "LDAP Servers" deben definir un SPI ("Service Provider Interface") para su producto, este SPI ofrecerá las funcionalidades del producto vía un ambiente en Java, esto es conocido como ganchos ("Hooks") del producto. (Varios vendedores ya han definido sus SPI SPI's de Java )
Mediante el API de JNDI (el cual se encuentra en los diversos JDK's ) es posible escribir cualquier tipo de programa para accesar información en directorios distribuidos o "LDAP Servers", con la garantía de utilizar solo ciertas funciones para accesar diversos directorios distribuidos o "LDAP Servers".
Naming Manager: Ofrece otro grado de flexibilidad sobre la utilización de JNDI, mencionado a continuación.
Al escribir el programa en "Java" y que éste busque información de cualquier tipo en un directorio distribuido o "LDAP" debe indicarse dentro del programa la ubicación del directorio "LDAP Server", esto es, el "LDAP Server" o "NDS Novell se encuentra en el nodo IP 193.21.12.5, osmosislatina.com, isp.com ? Es mediante el "Naming Manager" que se logra insular la ubicación física del sistema en cuestión.
Lo anterior es de suma importancia al desarrollar aplicaciones que utilicen RMI/CORBA ya que les permite cambiar de "servidor físico" sin la necesidad de modificar el código fuente de la aplicación.