- JNDI
-
La Interfaz de Nombrado y Directorio Java (Java Naming and Directory Interface) es una Interfaz de Programación de Aplicaciones (API) para servicios de directorio. Esto permite a los clientes descubrir y buscar objetos y nombres a través de un nombre y, como todas las APIs de Java que hacen de interfaz con sistemas host, es independiente de la implementación subyacente. Adicionalmente, especifica una interfaz de proveedor de servicio (SPI) que permite que las implementaciones del servicio de directorio sean integradas en el framework. Las implementaciones pueden hacer uso de un servidor, un fichero, o una base de datos; la elección depende del vendedor.
Contenido
Introducción
La API JNDI se usa por Invocación a Método Remoto de Java y a las APIs J2EE para buscar objetos en una red. JINI tiene su propio servicio de búsqueda y no usa la API de JNDI.
La API suministra:
- un mecanismo para asociar(bind) un objeto a un nombre
- una interfaz de búsqueda de directorio que permite consultas generales
- una interfaz de eventos que permite a los clientes determinar cuando las entradas de directorio han sido modificadas
- extensiones LDAP para soportar las capacidades adicionales de un servicio LDAP
La porción SPI permite el soporte de prácticamente cualquier tipo de servicio de directorio o nombrado incluyendo:
- LDAP
- DNS
- Network Information Service
- RMI
- servicio de nombres CORBA
- Sistema de ficheros
La especificación JNDI fue primero liberada por Sun Microsystems el 10 de marzo de 1997.[1]. En 2006, la versión vigente es JNDI 1.2.
Búsqueda básica
JNDI organiza sus nombres en una jerarquía. Un nombre puede ser cualquier string tal como "com.mydomain.ejb.MyBean". Un nombre también puede ser un objeto que soporte la interfaz Name, sin embargo la forma más común de nombrar a un objeto es un string. Un nombre se asocia a un objeto en el directorio almacenando el objeto o una referencia JNDI al objeto en el servicio de directorio identificado por el nombre.
La API JNDI define un contexto que especifica donde buscar un objeto. El contexto inicial se usa normalmente como punto de partida.
En el caso más simple, un contexto inicial debe crearse usando la implementación específica y los parámetros extra requeridos por la implementación. El contexto inicial será usado para buscar un nombre. El contexto inicial es análogo a la raíz de un árbol de directorios para un sistema de ficheros. Debajo hay un ejemplo de cómo crear un contexto inicial:
Hashtable args = new Hashtable(); //primero debes especificar la factory. //Así es como eliges entre la implementación jboss o una de Sun args.put( Context.INITIAL_CONTEXT_FACTORY, "com.jndiprovider.TheirContextFactory"); //El siguiente argumento es la URL que especifica dónde está el almacén de datos: args.put( Context.PROVIDER_URL, <nowiki>"http://jndiprovider-database"</nowiki> ); //Puedes tener que suministrar credenciales de seguridad //lo siguiente es crear el contexto inicial Context myCurrentContext = new InitialContext( args );
Un contexto se usa entonces para buscar previamente los nombres asociados en ese contexto. Por ejemplo:
Object reference = myCurrentContext.lookup( "com.mydomain.MyBean" ); //este paso es obligatorio con EJB. MyBean myBean = (MyBean) PortableRemoteObject.narrow( reference, MyBean.class );
Búsquedas
Los atributos pueden ser adjuntados a entradas especiales llamadas directorios. Los Directorios se necesitan para permitir la búsqueda de objetos por sus atributos asociados. Los Directorios son un tipo de contexto, ellos restringen el espacio del nombres más como lo hace una estructura de directorios en un sistema de ficheros.
Enlaces externos
Categoría:- Interfaces de programación de aplicaciones de Java
Wikimedia foundation. 2010.