Sistema de Nombrado en Java (JNDI) y II

Cuando llamados a list(), listBindings(), o a cualquiera de los m�todos search(), el proveedor de servicio LDAP interact�a con el servidor LDAP para recuperar los resultados y devolverlos en la forma de una NamingEnumeration. El proveedor de servicios LDAP puede recolectar todos los resultados antes de devolver la NamingEnumeration, o puede devolver cada resultado seg�n el llamador invoque a NamingEnumeration.next() o a NamingEnumeration.nextElement(). Podemos controlar el comportamiento del proveedor de servicio LDAP en este aspecto usando la propiedad de entorno Context.BATCHSIZE ("java.naming.batchsize"). Esta propiedad contiene la representaci�n string de un entero decimal. El proveedor de servicio LDAP usa este valor para determinar cu�ntos resultados leer desde el servidor antes de desbloquearse--este n�mero de resultados se llama tama�o del batch-- y permitir al programa cliente que obtenga los resultados usando next() o nextElement(). Cuando el programa cliente vac�a el batch, el proveedor de servicio LDAP solicita otro batch para que el programa cliente pueda continuar con su enumeraci�n. Si el tama�o del bacth es cero, el provedor de servcio se bloquear� hasta que se hayan le�do todos los resultados. Si no se configura esta propiedad, el tama�o del batch por defecto es 1.

Cuando llamamos a search(), por ejemplo usando un tama�o de batch de n, el proveedor de servicio se bloquear� hasta que lea n resultados desde el servidor. Por eso, seleccionar el tama�o del batch a un n�mero peque�o permite que el program se desbloquee antes. Sin embargo, provocar� alguna sobrecarga al procesar todos los bacth. Si estamos esperando un gran n�mero de resultados, podr�amos querer usar un tama�o de batch mayor para minimizar el n�mero de cambios de contexto entre el proveedor y nuestro c�digo. Por otro lado, tener un batch muy grande tambi�n significa que necesitamos m�s memoria para contener los resultados. Estos son los pros-y-contras que debemos cosiderar cuando elijamos el tama�o del batch.

Aqu� tenemos un ejemplo que selecciona el tama�o de batch a 10:

// Set the batch size to 10
env.put("java.naming.batchsize", "10");

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

// Perform the list
NamingEnumeration answer = ctx.list("ou=People"); 

.�Relaci�n con SearchControls.setCountLimit()

Observa que la propiedad de entorno Context.BATCHSIZE no afecta de ninguna manera a la cantidad de resultados que ser�n devueltos. No est� relacionada con SearchControls.setCountLimit().

.�Batchs a Nivel de Protocolo

Context.BATCHSIZE controla el tama�o del batch s�lo a nivel program�tico. Al nivel de protocolo, una operaci�n "search" LDAP hace que el servidor LDAP env�e inmediatamente todos los resultados al cliente. El proveedor almacena todos los resultados que recibe--esto podr�a causar problemas de desbordamiento de memoria.

Los servidores LDAP que soportan los controles Lista de Vistas Virtual o Resultados Paginados pueden enviar batchs de resultados al nivel de protocolo. Puedes ver m�s detalles sobre el uso de controles y extensiones en la lecci�n Controles y Extensiones.

COMPARTE ESTE ARTÍCULO

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