No importa si el proveedor de servicio soporta separaci�n fuerte o d�bil, una vez que ha determinado los componentes de un nombre mixto que debe procesar, necesita procesarlos. C�mo hace esto depende de su participaci�n en la resuoluci�n del nombre como un sistema de nombres intermedio o como un sistema de nombres terminal.
Un sistema de nombres intermedio es un sistema de nombres que s�lo est� involucrado en la resoluci�n de nombres mixtos. Es responsable de pasar la operaci�n a su contexto fuente. El sistema de nombres terminal (o fuente) es el sistema que contiene el contexto en el que se lleva a cabo la operaci�n.
En otras palabras, el sistema de nombres terminal es el sistema nombrado por la ra�z de componentes de un nombre mixto. En el siguiente ejemplo de nombre mixto.
cn=homedir,cn=Jon Ruiz,ou=People/tutorial/report.txt
el directorio LDAP es un sistema de nombres intermedio y es responsable de resolver el nombre� "cn=homedir,cn=Jon Ruiz,ou=People".
El sistema de ficheros UNIX es el sitema de nombres terminal o fuente y es el responsable de solicitar la operaci�n de contexto sobre el nombre "tutorial/report.txt".
El procesamiento de un sistema de nombres terminal no es muy interesante. El proveedor simplemente lleva a cabo la solicitud de operaci�n de contexto. Por ejemplo, si el m�todo de contexto invocado fue Context.list(), el proveedor de servicio invocar� a list(), usando sus componentes desde el nombre mixto, como si no fuera una federaci�n y devuelve el resultado de list() a su llamador.
Por el contrario, procesar un sistema de nombres intermedio es mucho m�s interesante.. El trabajo del proveedor es determinar la referencia del siguiente sistema de nombres, o nns, dando sus componentes desde el nombre mixto. Esta referencia se llama puntero del siguiente sistema de nombres, o puntero nns. En el ejemplo anterior, el proveedor LDAP debe determinar el puntero nns del nombre LDAP "cn=homedir,cn=Jon Ruiz,ou=People".
�Recuperar Punteros NNS
Un proveedor de servicio puede soportar recuperaci�n de punteros nns de dos formas. La primera es usar expl�citamente una llamada a puntero nns, tambi�n llamada junction. La segunda forma es un puntero nns impl�cito.
�Junctions
Una junction es una uni�n de un nombre a un puntero nns; en el ejemplo anterior, "cn=homedir,cn=Jon Ruiz,ou=People" es una junction. Este nombre est� unido a una referencia de un contexto de sistema de ficheros. Si realizamos un Context.lookup() sobre el nombre, no obtendremos una entrada LDAP sino un ejemplar de Context para un directorio (/tmp) en el sistema de ficheros.
Un contexto podr�a tener un n�mero ilimitado de junctions. Adem�s, una junction normalmente es indistinguible de otros nombres normales, aunque esto depende de la pol�tica de nombrado del sistema de nombres subyacente.
Punteros NNS Impl�citos
Un proveedor de servicio trambi�n puede soportar recuperaci�n de punteros nns impl�citos. A un puntero nns impl�cito se le llama usando el separador de componente de nombre mixto ("/").
Supongamos que el nombre "corp.wiz.com" nombra un objeto en el sistema de nombres actual. Entonces el nombre "corp.wiz.com/" nombrar� un puntero nns.
Un puntero nns impl�cito se usa cuando entradas de sistemas de nombres nativos no pueden o no deben usarse directamente para contener un puntero nns. Puede determinarse est�ticamente o din�micamente.
Un Puntero NNS Impl�cito Est�tico se construye usando datos encontrados en el sistema de nombres actual. Por ejemplo, supongamos que almacenamos punteros nns en el DNS usando registros TXT. Cuando el proveedor DNS procesa el nombre "corp.wiz.com/", usar� los datos en el registro TXT de la entrada "corp.wiz.com" para construir el puntero nns.
Un Puntero NNS Impl�cito Din�mico puede determinarse bas�ndonos en los tipos y contenidos del objeto unido en el sisterma de nombres actual. Es �til cuando el resultado de resolver los componentes de un nombre mixto en el sistema de nombres actual no indica niguna informaci�n nns.
La �nica conclusi�n que este proveedor de servicios puede dibujar es que la resoluci�n se complet� en el sistema de nombres actual y deber�a proceder al siguiente sistema de nombres.
Por ejemplo, supongamos que el nombre mixto "lib/xyz.zip/part1/abc" consta de dos partes: "lib/xyz.zip" y "part1/abc".
"lib/xyz.zip" nombra un fichero en formato ZIP, y "part1/abc" nombra una entrada del fichero ZIP. La resoluci�n de "lib/xyz.zip" resulta en un objeto file y no indica que nns usar para continuar la operaci�n sobre "part1/abc".
Para soportar punteros nns impl�ticos din�micos, el JNDI define una Reference especial llamada referencia nns. Esta referencia tiene un tipo de direcci�n "nns" y un contenido de direcci�n que es el objeto resuelto. En el ejemplo del fichero ZIP, el objeto resuelto es el propio fichero ZIP y el proveedor del sistema de ficheros deber�a construir una referencia nns de esta forma.
Reference ref = new Reference("java.io.File",
new RefAddr("nns") {
public Object getContent() {
return theFile;
}
});