Spec-Zone .ru
спецификации, руководства, описания, API
|
Остальная часть урока LDAP покрывает, как JNDI обеспечивает возможность выполнить определенные интересные операции LDAP.
Вы используете Context.rename(), чтобы переименовать объект в каталоге. В code
переименовывает внутренний узел от "ou=NewHires" до "ou=OldHires":
ctx.rename("ou=NewHires", "ou=OldHires");
С LDAP v3, можно переименовать запись в различную часть DIT. Чтобы сделать это при использовании Context.rename(), следует использовать контекст, который является общим предком и для нового и для старых записей. Например, чтобы переименовать "cn=C. User, ou=NewHires, o=JNDITutorial" к "cn=C. User, ou=People, o=JNDITutorial", следует использовать контекст, названный "o=JNDITutorial". Следующее an example
это демонстрирует это. Если Вы попытаетесь выполнить этот пример против LDAP v2 сервер, то Вы получите InvalidNameException
ctx.rename("cn=C. User, ou=NewHires", "cn=C. User, ou=People");
В LDAP, когда Вы переименовываете запись, у Вас есть опция хранения старого RDN записи как атрибут обновленной записи. Например, если Вы переименовываете запись "cn=C. User" к "cn=Claude User", можно определить, хотите ли Вы, чтобы старый "cn=C. User" RDN был сохранен как атрибут.
Чтобы определить, хотите ли Вы сохранить атрибут старого названия, когда Вы используете Context.rename(), используйте свойство среды "java.naming.ldap.deleteRDN". Если значением этого свойства является "true" (значение по умолчанию), старый RDN удаляется. Если его значением является "false", то старый RDN сохраняется как атрибут обновленной записи. Полный пример here
.
// 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");