En esta página: Crear y Actualizar Remisiones
Representación en el Directorio Una remisión se representa en un directorio LDAP como un objeto de la clase "referral". Contiene un atributo "ref", que puede tener una o más URLs. Cada URL representa alternativas equivalentes para seguir la remisión. Puedes ver el esquema de definición de la clase "referral" y del atributo "ref" en la draft-ietf-ldapext-namedref-00.txt. Desactivar el Seguimiento de Remisiones Debemos asegurarnos de que el servidor LDAP devolverá las entradas de remisión como entradas LDAP normales. Podemos hacer esto configurando la propiedad de entorno Context.REFERRAL como "ignore" o des-seleccionándola. "ignore" es el valor por defecto si la propiedad no está configurada. Esto es necesario si estamos actualizando o eliminado remisiones y es opcional si las estamos creando. Sin embargo, es una buena práctica hacerlo para que todos los programas que manejan remisiones sean consistentes. Crear una Remisión Creamos una entrada de remisión como lo haríamos con cualquier otro tipo de entrada, usando DirContext.bind() o DirContext.createSubcontext() y suministrando los atributos apropiados. La entrada de remisión debe tener como una de sus clases la clase "referral", y debe tener un atributo "ref" que al menos tenga un string URL. Aquí tenemos un ejemplo que crea una remisión llamada "cn=NewReferral" que apunta a la entrada "cn=J. Duke, ou=NewHires, o=JNDITutorial" en otro servidor: // The object classes Attribute objclass = new BasicAttribute("objectclass"); objclass.add("top"); objclass.add("referral"); objclass.add("extensibleObject"); // So that you can use cn as name // The referral itself Attribute ref = new BasicAttribute("ref", "ldap://localhost:389/cn=J. Duke, ou=NewHires, o=JNDITutorial"); // The name Attribute cn = new BasicAttribute("cn", "NewReferral"); // Create the attributes to be associated with the new context Attributes attrs = new BasicAttributes(true); // Case-ignore attrs.put(objclass); attrs.put(ref); attrs.put(cn); // Create the context Context result = ctx.createSubcontext("cn=NewReferral", attrs); Podemos usar el program de ejemplo CheckReferral.java para examinar los atributos de la entrada de remisión. Si lo ejecutamos sin argumentos de la línea de comandos, muestra la propia remisión. Si lo ejecutamos con un argumento, muestra los atributos de la entrada de remisión: # java CheckReferral ref: ldap://localhost:389/cn=J. Duke, ou=NewHires, o=JNDITutorial objectclass: top, referral, extensibleObject cn: NewReferral # java CheckReferral follow sn: Duke objectclass: top, person, organizationalPerson, inetOrgPerson mail: newbie@JNDITutorial.com cn: J. Duke Actualizar una Remisión Podemos actualizar una entrada de remisión como cualquier otro tipo de entrada, usando DirContext.modifyAttributes(). Aquí tenemos un ejemplo que modifica la URL de la remisión a "ldap://localhost:389/cn=C. User, ou=NewHires, o=JNDITutorial": // Set up new referral attribute Attributes attrs = new BasicAttributes("ref", "ldap://localhost:389/cn=C. User, ou=NewHires, o=JNDITutorial", true); // Case-ignore // Update the "ref" attribute ctx.modifyAttributes( "cn=NewReferral", DirContext.REPLACE_ATTRIBUTE, attrs); Después de ejecutar este programa, si volvemos a examinar la entrada usando CheckReferral, veremos esta salida: # java CheckReferral ref: ldap://localhost:389/cn=C. User, ou=NewHires, o=JNDITutorial objectclass: top, referral, extensibleObject cn: NewReferral # java CheckReferral follow sn: User objectclass: top, person, organizationalPerson, inetOrgPerson mail: cuser@JNDITutorial.com userpassword: [B@1dacd887 cn: C. User Borrar una Remisión Podemos borrar una entrada de remisión como lo haríamos con cualquier otro tipo de entrada, usando Context.unbind() o Context.destroySubcontext(). Aquí tenemos un ejemplo que elimina la entrada de remisión "cn=NewReferral": // Remove the entry ctx.destroySubcontext("cn=NewReferral");
|