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:


Renombrar Objetos

Usamos Context.rename() para renombrar un objeto en el directorio. En el LDAP v2, esto corresponde con la operación "modify RDN" que renombra una entrada dentro del mismo contexto. En el LDAP v3, esto corresponde con la operación "modify DN", que es como "modify RDN," excepto en que la entrada nueva y la vieja no tienen que estar en el mismo contexto. Podemos usar Context.rename() para renombrar una entrada hoja o un nodo interior. El siguiente código renombra un nodo interior de "ou=NewHires" como "ou=OldHires".

ctx.rename("ou=NewHires",
"ou=OldHires");
Nota:

El Netscape Directory Server v4.1 no soporta renombrar nodos interiores. Si ejecutamos este ejemplo, obtendremos una ContextNotEmptyException.

Renombrar a una Parte Diferente del DIT

Con el LDAP v3, podemos renombrar una entrada a una parte diferente del DIT. Para hacer esto usando Context.rename(), debemos usar un contexto que sea el ancestro común para la nueva y vieja entrada. Por ejemplo, para renombrar "cn=C. User, ou=NewHires, o=JNDITutorial" como "cn=C. User, ou=People, o=JNDITutorial", debemos usar el contexto llamado "o=JNDITutorial". Abajo tenemos un ejemplo que demuestra esto. Si intentamos ejecutar este ejemplo en unservidor LDAP v2, obtendremos una InvalidNameException porque la versión 2 no soporta esta caracterísitica.

ctx.rename("cn=C. User, ou=NewHires", "cn=C. User, ou=People");
Nota:

El Netscape Directory Server v4.1 no soporta el renombrado con diferentes nodos padre. Si ejecutamos este ejemplo usando ese servidor, obtendremos una CommunicationException (indicando un "error de protocolo").

Mantener los Atributos del Viejo Nombre

En LDAP, cuando renombramos una entrada, tenemos la opción de mantener el RDN de la vieja entrada como un atributo de la entrada actualizada. Por ejemplo, si renombramos la entrada "cn=C. User" como "cn=Claude User", podemos especifcar si queremos que se mantenga como un atributo el viejo RDN "cn=C. User".

Para especificar si queremos mantener el atributo del nombre antiguo cuando usamos Context.rename(), debemos usar la propiedad de entorno "java.naming.ldap.deleteRDN". Si el valor de esta propiedad es "true" (por defecto) el RDN antiguo será eliminado. Si el valor es "false", entonces el RDN antiguo se mantendrá como un atributo de la entrada actualizada.

// Set the property to keep RDN
env.put("java.naming.ldap.deleteRDN", "false");

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

// Perform the rename
ctx.rename("cn=C. User, ou=NewHires", "cn=Claude User,ou=NewHires");

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