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:


Desreferenciar Alias

En el X.500, podemos seleccionar una entrada hoja para que apunte a otro objeto en el espacio de nombres. Llamado un alias de entrada, contiene el DN del objeto al que apunta. Cuando buscamos un objeto usando el alias, ese es desrefenciado por lo que realmente de devuelve es el objeto apuntado por el DN del alias.

Podemos usar los alias para organizar el espacio de nombres del directorio, para que se pudieran utilizar los nombres viejos en el espacio de nombres involucrado. Supongamos, por ejemplo, que en la compañia "o=Wiz, c=us", los departamentos "ou=hardware" y "ou=software" se han mezclado dentro de "ou=engineering". Podemos mover los contenidos de "ou=hardware" y "ou=software" a "ou=engineering", y cambiar las entradas "ou=hardware" y "ou=software" dentro de alias de entrada para que apunten a "ou=engineering".

En LDAP, los alias se soportan de la misma forma que en X.500.

Cuando usamos el proveedor de servicio LDAP de Sun, podemos controlar cómo se desreferencian los Alias de cuatro formas distintas, usando la propiedad de entorno "java.naming.ldap.derefAliases", como se muestra en la siguiente tabla. Si esta propiedad no está configurada, el valor por defecto es "always".

Valor de Propeidad Descripción
always Siempre desreferencia los alias.
never Nunca desreferencia los alias.
finding Desreferencia los alías sólo durante la resolución de nombres.
searching Desreferencia los alias sólo después de la resolución de nombres.

En el LDAP, estos cuatro modos de desreferenciar alias sólo afectan a las peraciónde "búsqueda". No se hace ninguna desreferenciación para las operación de actualización "modify," "add," y "delete."

De forma similar, en el JNDI, no se hace ninguna desreferencia para los métodos de actualización en los interfaces Context and DirContext. La propiedad de entorno "java.naming.ldap.derefAliases" afecta a todos los métodos que lean desde el directorio.

Observa también que la bandera"dereference links" en la clase SearchControls no está relacionada con los alias.

Ejemplo de Desrefenciación de Alias

El siguiente ejemplo demustra cómo afecta la propiedad de entorno "java.naming.ldap.derefAliases" a las operación "search". Acepta como argumento de la línea de comandos una de las cuatro posibles selecciones para "java.naming.ldap.derefAliases". Si no se especifica ningún argumento, entonces la propiedad de entorno no se configura (que es equivalente a configurarla con "always").

Para este ejemplo, el directorio de configurado con dos alias, de esta forma:

  • "ou=Staff" es un alias que apunta a "ou=People". Si listamos el contexto de "ou=Staff", veremos los contenidos del contexto "ou=People".
  • "cn=Newbie, ou=People" es un alias que apunta a la entrada "cn=J. Duke, ou=NewHires".

Después de configurar la propiedad de entorno, el ejemplo realiza una búsqueda sobre el contexto "ou=Staff" de todas las entrafas cuyo atributo "cn" empiece con "J." Aquí está el fragmento de código que configura la propiedad de entorno y realiza la búsqueda:

if (args.length > 0) {
    // Set the dereference flag as requested
    env.put("java.naming.ldap.derefAliases", args[0]);
}

// Create the initial context
DirContext ctx = new InitialDirContext(env);

// Perform the search
NamingEnumeration answer = ctx.search("ou=Staff", "(cn=J*)", null);

La siguiente tabla sumariza los resultados de la ejecución de esre programa con diferentes argumentos en la línea de comandos.

Argumento de la Línea de Comandos Resultados
(none) Tres entradas: "cn=Jon Ruiz", "cn=John Fowler", "cn=J.Duke"
always Tres entradas."cn=Jon Ruiz", "cn=John Fowler", "cn=J.Duke"
never Cero (porque el alias "ou=Staff" no se desreferencia nunca)
finding Dos entradas: "cn=Jon Ruiz" y "cn=John Fowler" (porque el alias "cn=Newbie" no se desreferencia nunca)
searching Cero (porque el alias "ou=Staff" nunca se desreferencia)

Nota:

El Netscape Directory Server v4.1 no soporta alias. Si ejecutas este ejemplo usando ese servidor, el resultado será siempre como si se hubiera seleccionado "never".

Cuando ejecutamos estos ejemplo, los nombres de las entradas (NameClassPair.getName()) que obtenemos de vuelta son URLs LDAP que contienen los nombres totalmente cualificados de las entradas. Si llamamos a NameClassPair.isRelative() sobre ellos, entonces el método devuelve false. Esto es porque se sigue el alias, alcanza otra parte del espacio de nombres que ya no estará nombrada en relación al contexto "ou=Staff".


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