Programación en castellano Añadir una dirección | Buscador | Cursos | Artículos | Foros | Formación

Sistema de Nombrado en Java (JNDI) y II
Autor: Sun
Traductor: Juan Antonio Palos (Ozito)


En esta página:


Control de Petición

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.


Principio Página
© 1999-2002, Programación en castellano, s.l.
Contacto - Datos legales

ReD Internet: Hospedaje Web | envio sms gratis | Salvapantallas | Fondos de Escritorio, famosas | melodias moviles gratis| Gratis