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