lunes, 24 de marzo de 2014

JNDI

Hola

En esta entrada voy a hablar sobre JNDI, Jndi son las siglas de Java Naming and Directory Interface, es una interfaz de programación (API) que proporciona funcionalidades de nombrado y directorio a las aplicaciones escritas usando Java.

¿Para que sirve?

Sirve para configurar recursos compartidos para aplicaciones java organizándolos por directorio con nombres únicos.

Es un servicio de nombres que permite:
  • Relacionar nombres con objetos.
  • Permitir la búsqueda de un objeto por su nombre.
Por ejemplo:
  • LDAP (Lightweight Directory Access Protocol)
  • NDS (Novell Directory Service)
  • NIS (Network Information Service) 
Cada servicio tiene una forma de acceso diferente, lo que implica que si se cambia de fabricante hay que reescribir los clientes. Es por eso que se usa JNDI como capa por encima pues ofrece un acceso común a los recursos configurados.


Ahora vamos habla de como es la arquitectura de JNDI:

La API JNDI  permite escribir código Java que realice operaciones sobre directorios. Es una API uniforme a todos los tipos de servicios de directorios. Es similar a JDBC.

Service Provider Interface (SPI) permite acceder al servicio de directorio específico de cada fabricante.
Mapea código JNDI en operaciones específicas de directorios. Es un driver JNDI.
 
Algunos conceptos de JNDI:

Vamos a ver un listado de conceptos básicos de JNDI
  • Nombres Atómicos: es el componente indivisible de un nombre.
  • Nombres Compuestos: es un conjunto de cero o más nombres atómicos
  • Un binding es una asociación de un nombre con un objeto.
  • Un contexto (context) es un objeto que contiene cero o más bindings. Cada binding tiene un nombre atómico.
  • Un sistema de nombres es un conjunto de contextos.
  • Un espacio de nombres (namespace) son todos los nombres contenidos en un sistema de nombres.
  • Initial Context es el punto de entrada para comenzar a explorar un espacio de nombres. Es el primer contexto que se usa, es el punto de entrada para realizar las operaciones de nombres y de directorio.
  • Para obtener el InitialContext se usa el InitialContextFactory y el providerURL.
  • InitialContextFactory es el driver JNDI, es una clase Java. Conoce la semántica específica de una estructura de directorios particular.
  • El providerURL es la URL que se usa como punto de entrada para empezar a navegar.


import javax.naming.Context;
import javax.naming.InitialContext;
public class InitCtx {

public static void main(String args[]) throws Exception {
// Definir el contexto inicial
Properties props = new Properties();
FileInputStream in = new FileInputStream(“archivo.properties”);
props.load(in);
Context ctx = new InitialContext(props);
System.err.println("Success!");
}
}
 
El contenido de archivo.properties es el siguiente:
 
Context.INITIAL_CONTEXT_FACTORY=com.sun.jndi.ldat.LdapCtxFactory 
Context.PROVIDER_URL=ldap://louvre:389 

Nombre de la clase del driver JNDI
Ubicación del arbol de JNDI

En el desarrolo de JEE, JNDI nos provee diferentes funciones, por ejemplo:
  •  Obtener una referencia al API de transacciones (JTA)
  •  Conectarse a fabricas de recursos (JDBC, JMS)
  •  Localizar EJB







No hay comentarios:

Publicar un comentario