Sistema de Nombrado en Java (JNDI) y II

Un cliente env�a un control de petici�n para modificar o mejorar una operaci�n LDAP. Podemos usar un control para env�ar m�s informaci�n al servidor de la permitida para la operaci�n solicitada o para modificar el comportamiento de dicha operaci�n.

Los controles de petici�n se dividen en dos tipos:

  • Aquellos que afectan a c�mo se crea la conexion
  • Aquellos que afectan a los m�todos de contexto

El primero se usa cuando se necesita establecer o re-establecer una conexi�n con un servidor LDAP. El �ltimo se usa cuando se env�an todas las otras operaciones LDAP a un servidor LDAP.

Se debe diferenciar estos dos tipos de controles de petici�n porque el JNDI es un API de alto nivel que no trata directamente con las conexiones. Es trabajo del proveedor de servicio hacer cualquier manejo de conexiones necesario. Consecuentemente, se debe compartir una s�la conexi�n por varios ejemplares de Context, y el proveedor podr�a usar sus propios algoritmos para conservar la conexi�n y el uso de la red. As�, cuando se llama a un m�todo sobre el ejemplar de Context, el proveedor de servicio podr�a necesitar hacer alg�n manejo de conexi�n adem�s de realizar las correspondientes operaciones LDAP. Para el control de conexi�n usa los controles de petici�n de conexi�n, y para las operaciones LDAP normales, usa los controles de peticiones de contexto.

A menos que se especifique expl�citamente, el t�rmino control de petici�n significa aqu� controles de peticiones de contexto.

.�Controles Soportados por Sevidores LDAP

El soporte para controles espec�ficos depende del servidor LDAP. Eventualmente, cuando los controles est�n estandarizados, los servidores LDAP podr�an soportar un conjunto de controles populares. Sin embargo, algunos controles podr�an a�n as� ser propietarios y especificos del vendedor.

Aqu� tenemos un sencillo programa para listar los controles LDAP que soporta un servidor LDAP:

// Create the initial context
DirContext ctx = new InitialDirContext();

// Read the supportedcontrol from the root DSE
Attributes attrs = ctx.getAttributes(
    "ldap://localhost:389", new String[]{"supportedcontrol"});

Aqu� est� la salida producida cuando se ejecuta este programa en un servidor LDAP:

{supportedcontrol=supportedcontrol.
  2.16.840.1.113730.3.4.2, 
  2.16.840.1.113730.3.4.3, 
  2.16.840.1.113730.3.4.4, 
  2.16.840.1.113730.3.4.5, 
  1.2.840.113556.1.4.473, 
  2.16.840.1.113730.3.4.9, 
  2.16.840.1.113730.3.4.12
}

.�Implementaciones

El interface Control es gen�rico para todos los controles de petici�n y respuesta. T�picamente, trataremos con clases que implementan este interface en lugar de usar directamente sus m�todos. Dichas clases de implementaci�n normalmente tienen constructores amigables y m�todos accesores. Por ejemplo, Sun proporciona clases que implementan algunos controles populares, como el control Paged Results. �ste permite recuperar los resultados de una operaci�n "search" LDAP en p�ginas. Para crear un control "Paged Results", usamos su constructor, PagedResultsControl, de esta forma:

// Specify a page size of 20
Control prctl = new PagedResultsControl(20);

Las siguientes p�ginas ofrecen otros ejemplos de c�mo construir y usar controles.

COMPARTE ESTE ARTÍCULO

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