|
Spec-Zone .ru
спецификации, руководства, описания, API
|
Остальная часть урока LDAP покрывает, как JNDI обеспечивает возможность выполнить определенные интересные операции LDAP.
Вы используете Context.rename(), чтобы переименовать объект в каталоге. В , это соответствует, "изменяют RDN" работа, которая переименовывает запись в пределах того же самого контекста (то есть, переименовывая одноуровневый элемент). В , это соответствует, "изменяют DN" работа, которая походит, "изменяют RDN," за исключением того, что старые и новые записи не должны быть в том же самом контексте. Можно использовать Context.rename(), чтобы переименовать листовую запись или внутренний узел. Пример, показанный в уроке
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". Следующее , потому что версия 2 не поддерживает эту функцию.
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 сохраняется как атрибут обновленной записи. Полный пример
// 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");