Enlaces de Referencia
Un Enlace de
referencia es un enlace simbólico que puede expandir múltiples
sistemas de nombres. Está representado por la clase LinkRef.
Contiene un string URL o un nombre
mixto. Si el primer componente del nombre mixto es el string "."
(un string que contiene un caracter punto (".")), el nombre
mixto se resolverá en relación al contexo al que se unió el enlace de
referencia. De otra forma, la URL o el nombre mixto serán resueltos en relación
al contexto inicial.
Relación para Operaciones de Contexto
Podemos unir un enlace de referencia, igual que cualquier otro objeto, con un
contexto usando Context.bind()
y sus métodos relacionados. El proveedor de servicios debe soportar los objetos
Reference
y Referenceable.
Cuando realizamos una Context.lookup()
u otra operación de contexto que involucre al enlace de referencia, éste será
des-referenciado automáticamente.
Por ejemplo, supongamos que tenemos el siguiente nombre mixto en el contexto inicial.
some/where/over/there
Creamos un enlace de referencia para "some/where" y lo
unimos al nombre "here" en el contexto inicial. Después
si listamos el contexto usando el nombre "here/over/there"
es efectivamente lo mismo que usar el nombre "some/where/over/there".
Un enlace de referencia no se des-referencia sólo cuando usamos Context.lookupLink().
En este caso, se devuelve un enlace de referencia unido al componente terminal
de un nombre mixto sin ser des-refernciado. En el ejemplo anterior, si
utilizamos esta sentencia.
Object obj = ctx.lookupLink("here");
el resultado será un LinkRef que contiene el nombre mixto "some/where".
Si el nombre que hemos suministrado a lookupLink() contiene un
componente unido a un enlace de referencia como un componene no-terminal, el
enlace de referencia si que será des-referenciado. En el ejemplo anterior, si
usamos esta sentencia.
Object obj = ctx.lookupLink("here/over/there");
El resultado será el objeto unido a "some/where/over/there".
|
Nota:
El soporte para enlaces de referencias está implementado por el proveedor de
servicios. Ninguno de los proveedores de sevicos LDAP o del sistema de ficheros
de Sun soporta actualmente los enlaces de referencias.
|
Relacíon con Alias, Referrals, Referencias URL, y otros Enlaces Simbólicos
Los enlaces simbólicos son muy comunes en sistemas de nombres y directorios.
Por ejemplo, el sistema de ficheros UNIX soporta enlaces simbólicos para
ficheros y directorios, el LDAP soporta alias
y referrals, y el
JNDI soporta referencias URL (ver la lección URLs).
El enlace de referencia del JNDI difiere de todas estas.
Un alias LDAP es una entrada LDAP que contiene un nombre distinguido de otra
entrada LDAP en el mismo servidor LDAP. Los servidores LDAP son responsables de
des-refenciar los alias. Un enlace de referencia difiere de un alias enque no es
específico de LDAP y puede nombrar objetos fuera del espacio de nombres o del
servidor LDAP. Al contrario que los alias, un enlace de referencia es procesado
en el lado del cliente (por el proveedor de servicios).
Un referral LDAP es una entrada que contiene la URL de otra entrada LDAP,
posiblemente en otro servidor LDAP. La URL no necesita ser una URL LDAP, pero la
entrada que nombra debe ser una entrada LDAP. Los clientes LDAP son responsables
de des-referenciar las referrals. Un enlace de referencia difiere de un referral
en que no es específico de LDAP. No necesita nombrar otra entrada LDAP. Un
enlace de referencia puede ser relativo, es decir, puede nombrar otro
objeto en relación al contexto en el que se unió el enlace de referencia. Un
referral siempre contiene una URL absoluta.
Un enlace simbólico UNIX contiene un nombre relativo o absoluto a un fichero
o directorio. Difiere de los enlaces de referencia en que sólo puede nombrar
otro objeto o directorio.
Un enlace de referencia difiere de una referencia URL en que está
explícitamente tipado y diseñado para soportar enlaces, mientras que una
referencia URL está pensada para soportar federaciones. Las referencias URL son
procesadas por implementaciones/factorías de contexto URL. Los enlaces de
referencia son soportados por los proveedores de servicios que son los
responsables de des-refereniarlos y de realizar el bucle de enlaces y de
detectar los límites del enlace.