Sistema de Nombrado en Java (JNDI) y II

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".

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR