Spec-Zone .ru
спецификации, руководства, описания, API
|
Примеры именования, обсужденные, как можно использовать bind(), rebind(). Интерфейс DirContext содержит перегруженные версии этих методов, которые принимают атрибуты. Можно использовать эти методы DirContext, чтобы связать атрибуты с объектом в то время, когда привязка или подконтекст добавляются к пространству имен. Например, Вы могли бы создать объект Person и связать его с пространством имен и одновременно связать атрибуты о том объекте Person.
// Create the object to be bound Fruit fruit = new Fruit("orange"); // Create attributes to be associated with the object Attributes attrs = new BasicAttributes(true); // case-ignore Attribute objclass = new BasicAttribute("objectclass"); objclass.add("top"); objclass.add("organizationalUnit"); attrs.put(objclass); // Perform bind ctx.bind("ou=favorite, ou=Fruits", fruit, attrs);
This example
создает объект class Fruit
и связывает это с именем "ou=favorite" в контекст под названием "ou=Fruits", относительно ctx. У этой привязки есть атрибут "objectclass". Если бы Вы впоследствии искали имя "ou=favorite, ou=Fruits" в ctx, то Вы получили бы объект fruit. Если бы Вы тогда получили атрибуты "ou=favorite, ou=Fruits", то Вы получили бы те атрибуты, с которыми создавался объект. Следующее является выводом этого примера.
# java Bind orange attribute: objectclass value: top value: organizationalUnit value: javaObject value: javaNamingReference attribute: javaclassname value: Fruit attribute: javafactory value: FruitFactory attribute: javareferenceaddress value: #0#fruit#orange attribute: ou value: favorite
Дополнительные атрибуты и показанные значения атрибута используются, чтобы хранить информацию об объекте (fruit). Эти дополнительные атрибуты обсуждаются более подробно в следе.
Если бы Вы должны были выполнить этот пример дважды, то вторая попытка перестала бы работать с NameAlreadyBoundException. Это - то, потому что имя "ou=favorite" уже связывается в контексте "ou=Fruits". Для второй попытки успешно выполниться, необходимо бы использовать rebind().
// Create the object to be bound Fruit fruit = new Fruit("lemon"); // Create attributes to be associated with the object Attributes attrs = new BasicAttributes(true); // case-ignore Attribute objclass = new BasicAttribute("objectclass"); objclass.add("top"); objclass.add("organizationalUnit"); attrs.put(objclass); // Perform bind ctx.rebind("ou=favorite, ou=Fruits", fruit, attrs);
Когда Вы работаете this example
, это заменяет привязку что bind()
пример создается.
# java Rebind lemon attribute: objectclass value: top value: organizationalUnit value: javaObject value: javaNamingReference attribute: javaclassname value: Fruit attribute: javafactory value: FruitFactory attribute: javareferenceaddress value: #0#fruit#lemon attribute: ou value: favorite