Programación en castellano Añadir una dirección | Buscador | Cursos | Artículos | Foros | Formación

Sistema de Nombrado en Java (JNDI) [Parte I]
Autor: Sun
Traductor: Juan Antonio Palos (Ozito)


En esta página:


El Contexto Inicial

Antes de realizar cualquier operación de servicio de nombres o de directorio, ncesitamos adquirir un contexto inicial--el punto de arranque dentro del espacio de nombres. Esto es porque todos los métodos sobre servicios de nombres o directorios se realizan en relación a algún contexto. Para obtener un contexto inicial tenemos que seguir estos pasos.

  1. Seleccionar el proveedor de servicios correspondiente al sevicio al que queremos acceder.
  2. Especificar la configuración que necesite el contexto inicial.
  3. Llamar al constructor InitialContext.

Seleccionar el Proveedor de Servicio para el Contexto Incial

Podemos especificar el proveedor de servicio a utilizar para el contexto inicial creando un conjunto de propiedades de entorno (una Hashtable) y añadirle el nombre de la clase del proveedor de servicio.

Por ejemplo, si estamos usando el proveedor de sevicios LDAP de Sun Microsystems, nuestro código se debería parecer a esto.

Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, 
	"com.sun.jndi.ldap.LdapCtxFactory");

Para especificar el proveedor de servicio del sistema de fichero proporcionado por Sun Microsystems, deberíamos escribir un código como éste.

Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, 
	"com.sun.jndi.fscontext.RefFSContextFactory");

También podemos usar propiedades de sistema para especificar el proveedor de servicos a utilizar.

Suministrar la Infomación que Necesita el Contexto Inicial

Clientes de diferentes directorios podrían necesitar distinta información para contactar con el directorio. Por ejemplo, podríamos necesitar conocer en qué máquina se está ejecutando el servidor y qué información es necesaria para identificar al usuario para el directorio. Dicha información es pasada al proveedor de servicio mediante propiedades de entorno. El JNDI especifica algunas propiedades de entorno genéricas que el proveedor de servicio puede utilizar. La documentación de nuestro proveedor de servicio nos dará detalles sobre la información requerida por estas propiedades.

Por ejemplo, supongamos que el programa está usando el proveedor de servicios LDAP. Este proveedor requiere que el programa especifica la localización del servidor LDAP, así como información de entidad del usuario.

Para proporcionar esta información, podriamos escribir un código como éste.

env.put(Context.PROVIDER_URL, "ldap://ldap.wiz.com:389");
env.put(Context.SECURITY_PRINCIPAL, "joeuser");
env.put(Context.SECURITY_CREDENTIALS, "joepassword");

Este tutorial usa los proveedores de servicios del sistema de ficheros y LDAP de Sun Microsystems. Para los ejemplos que usan el sistema de ficheros, suministramos la URL del proveedor la URL correspondiente al path que dimos en el programa Setup. Por ejemplo, si usamos el directorio /tmp/tutorial en el programa Setup, nuestro código se podría parecer a esto.

env.put(Context.PROVIDER_URL, "file:/tmp/tutorial/");

Los ejemplos que usan LDAP asumen que el servidor ha sido instalado en el puerto 389 de la máquina local con el nombre de raíz distinguido de "o=JNDITutorial" y no se requiere autentificación para actualizar este directorio. Incluyen el siguiente codigo para configurar el entorno.

env.put(Context.PROVIDER_URL, "ldap://localhost:389/o=JNDITutorial");

Si estamos usando un directorio que se configura de forma diferente, necesitaremos configurar de la forma adecuada estas propiedades de entorno.. Por ejemplo, si el directorio se está ejecutando en otra máquina, necesitaremos reemplazar "localhost" con el nombre de esa máquina.

Crear el Contexto Inicial

Ahora estámos listos para crear el contexto incial. Para hacer esto, pasamos al constructor de InitialContext las propiedades de entorno que hemos creado anteriormente.

Context ctx = new InitialContext(env);

Ahora que tenemos una referencia a un objeto Context, podemos empezar a acceder al servicio de nombres.

Para realizar operaciones de directorio, necesitamos usar un InitialDirContext.

Para hacer esto usamos uno de sus constructores.

DirContext ctx = new InitialDirContext(env);

Esta sentencia devuelve una referencia a un objeto DirContext para realizar operaciones de directorio.


Principio Página
© 1999-2002, Programación en castellano, s.l.
Contacto - Datos legales

ReD Internet: Hospedaje Web | envio sms gratis | Salvapantallas | Fondos de Escritorio, famosas | melodias moviles gratis| Gratis