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

Sistema de Nombrado en Java (JNDI) y II
Autor: Sun
Traductor: Juan Antonio Palos (Ozito)


En esta página:


Remisiones en JNDI

Una aplicación JNDI usa la propiedad de entorno Context.REFERRAL ("java.naming.referral") para indicar al proveedor de servicio cómo manejar las remisiones. La siguiente tabla muestra los valores definidos para esta propiedad. Si no se configura, el valor por defecto es ignorar las remisiones.

Configuración Descripción
ignore Ignora las remisiones
follow Sigue automáticamente las remisiones
throw Lanza una ReferralException por cada remision

Al contrario que los alias, que son siempre ignorados por operaciones LDAP que actualizan el directorio, la propiedad Context.REFERRAL afecta a todas las operaciones. Puedes ver una explicación sobre cómo actualizar remisiones en la lección Crear y Actualizar Remisiones.

Esta referencia afecta tanto a las "referral" de respuestas de error como a las referencias de continuación.

Interacción con el Control Manage Referral

El control Manage Referral (draft-ietf-ldapext-namedref-00.txt) le dice al servidor LDAP que devuelva las entradas de remisión como entradas ordinarias (en lugar de devolver "referral" de respuestas de error o referencias de continuación). Si estamos usando el LDAP v3 y hemos configurado Context.REFERRAL como "ignore", el proveedor de servicio lDAP enviará automáticamente este control junto con la solicitud. Si estamos usando el LDAP v2, el control no se enviará porque no es aplicable en este protocolo. Cuando configuramos Context.REFERRAL a cualquier otro valor, el control no será envíado sin importar la versión de protocolo. Cuando se actualizan entradas de remisión, siempre deberíamos suar "ignore".

Cuando el proveedor de servicio recibe una remisión sin importar que Context.REFERRAL esté seleccionado como "ignore", lanzará una PartialResultException para indicar que se podrían obtener más resultados si se siguiera la remisión. En este caso, el servidor no soporta el control Manage Referral y soporta las remisiones actualizadas de alguna otra forma.

Cuándo se Procesan las Remisiones

Las referencias de continuación pueden mezclarse con resultados de búsquedas devueltos por una operación "search" LDAP. Por ejemplo, cuando se busca un directorio, el servidor podría devolver varios resultados, además de unas pocas referencias de continuación que muestran donde obtener más resultados. Estos resultados y referencias podrían estar mezclados a nivel de protocolo. Cuando la propiedad Context.REFERRAL se configura como "follow", el proveedor de servicio LDAP primero procesa todas las entradas normales, antes de seguir la referencias de continuación. Cuando esta propiedad se configura como "throw", primero se devuelven en la enumeración todas las entradas normales, antes de lanzar la ReferralException.

Por el contrario, una respuesta de error "referral" es procesada inmediatamente cuando Context.REFERRAL se configura como "follow" o como "throw".

Configuración del Servidor para los Ejemplos

Los ejemplos de esta sección se comunican con un nuevo servidor cuyo directorio contiene remisiones al servidor original de este tutorial. Se asume que el servidor original se está ejecutado en el puerto 389 de la máquina local, y el nuevo servidor en el puerto 489 de la misma máquina.

Se han configurado estas tres remisones desde el nuevo servidor (puerto 489) hasta el servidor original (puerto 389).

  • La entrada "ou=People, o=JNDITutorial" en el nuevo servidor es una remisión a la entrada con el mismo nombre en el servidor original.
  • La entrada "ou=People, ou=All, o=JNDITutorial" en el nuevo servidor es una remisión a la entrada "ou=People, o=JNDITutorial" en el servidor original.
  • La entrada "ou=NewHires, ou=All, o=JNDITutorial" es una remisión de la entrada "ou=NewHires, o=JNDITutorial" en el servidor original.

El contexto inicial usado en los ejemplos de esta lección se inicializa usando las siguientes propiedades de entorno:

// Set up the environment for creating the initial context
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, 
    "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://localhost:489/o=JNDITutorial");

Al contrario que el resto de los ejemplos de este tutorial, el número de puerto es 489 en lugar de 389.

Antes de continuar:

Los ejemplos de esta lección requieren que configuremos un segundo servidor usando el fichero de configuración refserver.ldif. El servidor debe soportar LDAP v3 y draft-ietf-ldapext-namedref-00.txt. Si el servidor no soporta remisiones de esta forma, estos ejemplos no funcionarán como se muestra. El fichero de configuración contiene remisiones que apuntan al servidor original que ya hemos configurado (usando tutorial.ldif y ldaptrail.ldif). Asume que el servidor está en el puerto 389 de la máquina local. Si hemos configurado el servidor sobre otra máquina u otro puerto, entonces necesitamos editar las entrada "ref" del fichero refserver.ldif y reemplazar "localhost:389" con la configuración apropiada. El segundo servidor está configurado en el puerto 489 de la máquina local. Si configuramos el segundo servidor en otra máquina o en otro puerto, necesitamos ajustar adecuadamente las configuraciones de la propiedad de entorno Context.PROVIDER_URL.

La configuraciónde un servidor de directorio normalmente la realiza el administrador del sistema o del directorio. Puedes encontrar más información en la lección Preparaciones .


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