Categorías destacadas
programacion php    
Artículo
1
¡votar!

 Sistema de Nombrado en Java (JNDI) y II


Crear y Actualizar Remisiones

Nota:

La siguiente explicación asume que el servidor LDAP soporta remisiones según se describe en la draft-ietf-ldapext-namedref-00.txt. Si el servidor no soporta las remisiones de esta forma, los ejemplos de esta sección no funcionarán.

. 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");
Publicado por:
Ricard Lou Torrijos
Recomendar
a un amigo
Compartir
en redes
 
Comentarios
 
BBDD
Entornos de desarrollo
Entretenimiento
Herramientas
Internet
Lenguajes de script
Lenguajes imperativos
Lenguajes orientados a objeto
Otros lenguajes
Plataformas
Teoría
Varios
Copyright © 1998-2011 Programación en Castellano. Todos los derechos reservados
Datos legales | Politica de privacidad | Contacte con nosotros | Publicidad

Diseño web y desarrollo web. Un proyecto de los hermanos Carrero.

Red internet:
Juegos gratis | Servidores dedicados
Más internet: Password | Directorio de weblogs | Favicon