En esta página: Versiones de Protocolos El LDAP está disponible como versión 2 y como versión 3. Como se explicó en la lección Comparación de los Modelos LDAP y JNDI, las dos versiones difieren en muchas características (como las remisiones y los mecanismos de autentificación conectables) que son parte de la versión 3 pero no están disponibles en la versión 2. Pero para la mayoría de los casos cuando usemos el JNDI para acceder al servicio LDAP, no veremos diferencias entre las dos versiones. El proveedor de servicio LDAP de Sun soporta la dos versiones. La selección del protocolo a utilizar depende principalmente de qué versión del servidor LDAP soporta. Por defecto, el proveedor LDAP primero usa la versión 3 para comunicar con el servidor LDAP especificado. Si el servidor no soporta esta versión, entonces el proveedor LDAP intenta comunicar usando la versión 2. El proveedor LDAP maneja automáticamente la selección, por eso no es necesario que el cliente especifique que versión particular quiere usar. Sólo en unas pocas circunstancias podriamos querer especificar una versión de protocolo explícitamente. Una es que el servidor LDAP con el que queremos comunirar falle al indicar que no soporta la versión 3. Algunos servidores públicos exhiben este comportamiento, y un intento de comunicar con ellos usando la versión 3 puede resultar en un cuelgue del cliente (porque el servidor no soporta la versión) o en un error de protocolo (porque el servidor responde con un codigo de error incorrecto). O, podríamos querer especificar explícitamente la versión si queremos que nuestro programa utilice sólo esta versión y que falle si el servidor contactado no la soporta. Por ejemplo, nuestro programa podría, necesitar hacer actualizaciones en el esquema publicado del servidor; esto sólo tiene sentido para la versión 3. Para especificar la versión de protocolo, usamos la propiedad de entorno "java.naming.ldap.version". Aquí tenemos un ejemplo que pide la versión 2 del protocolo: // Set up the environment for creating the initial context Hashtable env = new Hashtable(11); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); env.put(Context.PROVIDER_URL, "ldap://localhost:389/o=JNDITutorial"); env.put("java.naming.ldap.version", "2"); // Create the initial context DirContext ctx = new InitialDirContext(env); // ... do something useful with ctx Para pedir la versión 3, simplemente reemplazamos el 2 con un 3, de esta forma: env.put("java.naming.ldap.version", "3");
|