Sistema de Nombrado en Java (JNDI) [Parte I]

Una vez que el proveedor de servicios ha determinado el puntero nns usando las t�cnicas descritas en la la p�gina anterior, debe devolver el puntero nns dentro de un contexto, llamado contexto de continuaci�n, y continuar la operaci�n en ese contexto. Para hacer esto, el JNDI proporciona los siguientes m�todos de utilidad.

El argumento a estos m�todos es un CannotProceedException.

El prop�sito de estos m�todos es obtener un contexto en el nns en el que continuar la operaci�n usando el puntero nns y otra informaci�n de la CannotProceedException.

.�El Contexto de Continuaci�n

El JNDI obtiene el contexto de continuaci�n bas�ndose en la informaci�n suministrada en la CannotProceedException. El proveedor de servicios debe completar esta informaci�n. La siguiente tabla describe los campos de esta excepci�n.

Campo Descripci�n
resolved name El nombre del objeto resuelto, en relaci�n al contexto original para esta operaci�n.
resolved object El puntero nns. Este se usa como argumento objeto para la factor�a de objetos.
remaining name La parte del nombre mixto que falta por procesar.
"alt" name El nombre del objeto resuelto, en relaci�n al nombre de contexto "alt". Se usa como argumento nombre para la factor�a de objetos.
"alt" name context El contexto en el que resolver el nombre "alt". Se usa como el argumento context para la factor�a de objetos.
environment El entorno del contexto actual. Se usa como argumento entorno para la factor�a de objetos.
remaining new name El nombre restante para usar como argumento "new name" para Context.rename().

El JNDI usa la informaci�n de la excepci�n para encontrar un objecto factor�a, descrito en la lecci�n Objectos Factor�a, que devuelve un ejemplar de Context.

Si el JNDI no puede encontrar el contexto apropiado en el que continuar la operaci�n, lanza la CannotProceedException recibida desde el proveedor de servicios.

.�Resolver a trav�s de Subinterfaces

Observamos en las descripciones anteriores que el objeto factor�a que produce el contexto de continuaci�n debe devolver un ejemplar de Context.

El ejemplar no necesita implementar otros subinterfaces de Context.

Eso es por lo que no tiene sentido requerir que el sistema de nombres intermedio implemente todos los subinterfaces del sistema de nombres terminal. Para que la resoluci�n tenga �xito, el JNDI tiene los siguientes requerimientos.

  • Los proveedores para los sistemas de nombres originador y terminal deben implementar el subinterface.
  • Los proveedores para todos los otros sistemas de nombres intemedios deben implementar el subinterface o los interfaces Resolver y Context.

El interface Resolver est� pensado para permitir la resoluci�n para proceder a trav�s de un proveedor que soporta el interface de otro que lo hace. DirectoryManager.getContinuationDirContext() usa autom�ticamente el interface Resolver cuando lo necesita.

Puedes ir a la secci�n Construir un Proveedor de Servicios para ver m�s detalles.

.�Completar la Operaci�n

Despu�s de que el proveedor obtenga un contexto de continuaci�n, llama a la operaci�n de contexto original sobre el contexto de continuaci�n usando como argumento nombre el resto de los componentes del nombre mixto. Aqu� tenemos un ejemplo que hace esto para DirContext.search().

DirContext cctx = DirectoryManager.getContinuationDirContext(cpe);
answer = cctx.search(cpe.getRemainingName(), matchingAttrs);

El proceso contin�a en el siguiente sistema de� nombres. Ahora se repite el siguiente proceso de tres pasos hasta que el se alcanza el sistema de nombres terminal.

  • Determinar los componentes del nombre mixto a procesar.
  • Procesar los resultados del paso 1.
  • Continuar en el siguiente sistema de nombres.

En este punto, se llava a cabo la operaci�n real.

COMPARTE ESTE ARTÍCULO

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