Spec-Zone .ru
спецификации, руководства, описания, API
|
public interface Context
Большинство методов перегрузило версии с одним взятием a Name
параметр и одно взятие a String
. Эти перегруженные версии эквивалентны в этом если Name
и String
параметры являются только различными представлениями того же самого имени, тогда перегруженные версии тех же самых методов ведут себя то же самое. В описаниях метода ниже, полностью документируется только одна версия. У второй версии вместо этого есть ссылка к первому: та же самая документация применяется к обоим.
Для систем, которые поддерживают федерацию, параметрами имени String методам Context являются составные имена. Параметры имени, которые являются экземплярами CompositeName, обрабатываются, как составной объект называет, в то время как параметры Name, которые не являются экземплярами CompositeName, обрабатываются, как составной объект называет (который мог бы быть экземплярами CompoundName или другими реализациями составных имен). Это позволяет результатам NameParser.parse() использоваться в качестве параметров методам Context. До JNDI 1.2, все параметры имени были обработаны как составные имена.
Кроме того, для систем, которые поддерживают федерацию, все имена, возвращенные в NamingEnumeration из list() и listBindings(), являются составными именами, представленными как строки. См. CompositeName для строкового синтаксиса имен.
Для систем, которые не поддерживают федерацию, параметрами имени (или в Name или в формах String) и имена, возвращенные в NamingEnumeration, могут быть имена в своем собственном пространстве имен, а не имена в составном пространстве имен, на усмотрение поставщика услуг.
lookup
метод, когда передано пустое название, возвратит новый экземпляр Контекста, представляющий тот же самый контекст именования. В целях управления совместным выполнением работа Контекста, которая возвращает NamingEnumeration, как полагают, не завершилась, в то время как перечисление находится все еще в использовании, или в то время как любые отсылки, сгенерированные той работой, все еще сопровождаются.
Приложения JNDI нуждаются в способе передать различное предпочтение и свойства, которые определяют среду, в которой получают доступ к именованию и службы каталогов. Например, контекст мог бы потребовать спецификации учетных данных безопасности, чтобы получить доступ к службе. Другой контекст мог бы потребовать, чтобы конфигурационная информация сервера была предоставлена. Они упоминаются как среда контекста. Интерфейс Context обеспечивает методы для получения и обновления этой среды.
Среда наследована от родительского контекста, поскольку методы контекста продолжаются от одного контекста до следующего. Изменения к среде одного контекста непосредственно не влияют на таковые из других контекстов.
Это является зависящим от реализации, когда свойства среды используются и/или проверяются для законности. Например, некоторые из связанных с безопасностью свойств используются поставщиками услуг, чтобы "войти в систему" к каталогу. Этот процесс входа в систему мог бы произойти в то время, когда контекст создается, или в первый раз, когда метод вызывается на контекст. Когда, и происходит ли это вообще, является зависящим от реализации. Когда свойства среды добавляются или удаляются из контекста, проверяя, что законность изменений является снова зависящей от реализации. Например, проверка некоторых свойств могла бы произойти в то время, когда изменение производится, или в то время, когда следующая работа выполняется на контексте, или нисколько.
Любой объект со ссылкой на контекст может исследовать среду того контекста. Уязвимая информация, такая как пароли в виде открытого текста не должна быть сохранена там, если реализация, как не известно, защищает ее.
Чтобы упростить задачу установки среды, требуемой приложением JNDI, компоненты приложения и поставщики услуг могут быть распределены наряду с файлами ресурсов. Файл ресурсов JNDI является файлом в формате файла свойств (см. java.util.Properties
), содержа список пар ключ/значение. Ключ является именем свойства (например, "java.naming.factory.object"), и значение является строкой в формате, определенном для того свойства. Вот пример файла ресурсов JNDI:
Библиотека классов JNDI читает файлы ресурсов и делает значения свойств в свободном доступе. Таким образом файлы ресурсов JNDI, как должны полагать, являются "миром, читаемым", и уязвимая информация, такая как пароли в виде открытого текста не должна быть сохранена там.java.naming.factory.object=com.sun.jndi.ldap.AttrsToCorba:com.wiz.from.Person java.naming.factory.state=com.sun.jndi.ldap.CorbaToAttrs:com.wiz.from.Person java.naming.factory.control=com.sun.jndi.ldap.ResponseControlFactory
Есть два вида файлов ресурсов JNDI: провайдер и приложение.
[снабдите префиксом/] jndiprovider.propertiesгде префикс является именем пакета реализации (й) контекста провайдера с каждым периодом (". ") преобразованный в наклонную черту (" / "). Например, предположите, что поставщик услуг определяет реализацию контекста с помощью имени класса com.sun.jndi.ldap.LdapCtx. Ресурс провайдера для этого провайдера называют com/sun/jndi/ldap/jndiprovider.properties. Если класс не находится в пакете, именем ресурса является просто jndiprovider.properties.
Определенные методы в библиотеке классов JNDI используют стандартные свойства JNDI, которые определяют списки фабрик JNDI:
ClassLoader.getResources()
) все файлы ресурсов приложения под названием jndi.properties в пути к классу. Кроме того, если Java home/lib/jndi.properties файла существует и читаем, JNDI обрабатывает его как дополнительный файл ресурсов приложения. (java.home указывает на каталог, названный системным свойством java.home.) Все свойства, содержавшиеся в этих файлах, помещаются в среду начального контекста. Эта среда тогда наследована другими контекстами. Для каждого свойства, найденного больше чем в одном файле ресурсов приложения, JNDI использует первое найденное значение или в нескольких случаях, где имеет смысл делать так, это связывает все значения (детали даются ниже). Например, если "java.naming.factory.object" свойство находится в трех файлах ресурсов jndi.properties, список объектных фабрик является связью значений свойств от всех трех файлов. Используя эту схему, каждый развертываемый компонент ответственен за перечисление фабрик, которые это экспортирует. JNDI автоматически собирает и использует все эти списки экспорта, ища классы фабрики.
Когда библиотека классов JNDI должна определить значение свойства, это делает так, объединяя значения из следующих двух источников в порядке:
Когда поставщик услуг должен будет определить значение свойства, оно обычно примет что значение непосредственно от среды. Поставщик услуг может определить специфичные для провайдера свойства, которые будут помещены в его собственный файл ресурсов провайдера. В этом случае это должно объединить значения как описано в предыдущем абзаце.
Таким образом каждый разработчик поставщика услуг может определить список фабрик, чтобы использовать с тем поставщиком услуг. Они могут быть изменены ресурсами приложения, определенными deployer приложения или апплета, который поочередно может быть изменен пользователем.
Модификатор и Тип | Поле и Описание |
---|---|
static String |
АППЛЕТ
Постоянный, который содержит имя свойства среды для того, чтобы определить апплет для начального конструктора контекста, чтобы использовать, ища другие свойства.
|
static String |
АВТОРИТЕТНЫЙ
Постоянный, который содержит имя свойства среды для того, чтобы определить авторитетность службы, которую требуют.
|
static String |
BATCHSIZE
Постоянный, который содержит имя свойства среды для того, чтобы определить пакетный размер, чтобы использовать, возвращая данные через протокол службы.
|
static String |
DNS_URL
Постоянный, который содержит имя свойства среды для того, чтобы определить имена хоста DNS и доменные имена, чтобы использовать для контекста URL JNDI (например, "dns://somehost/wiz.com").
|
static String |
INITIAL_CONTEXT_FACTORY
Постоянный, который содержит имя свойства среды для того, чтобы определить начальную фабрику контекста, чтобы использовать.
|
static String |
ЯЗЫК
Постоянный, который содержит имя свойства среды для того, чтобы определить привилегированный язык, чтобы использовать со службой.
|
static String |
OBJECT_FACTORIES
Постоянный, который содержит имя свойства среды для того, чтобы определить список объектных фабрик, чтобы использовать.
|
static String |
PROVIDER_URL
Постоянный, который содержит имя свойства среды для того, чтобы определить конфигурационную информацию для поставщика услуг, чтобы использовать.
|
static String |
ОТСЫЛКА
Постоянный, который содержит имя свойства среды для того, чтобы определить, как должны быть обработаны отсылки, с которыми встречается поставщик услуг.
|
static String |
SECURITY_AUTHENTICATION
Постоянный, который содержит имя свойства среды для того, чтобы определить уровень безопасности, чтобы использовать.
|
static String |
SECURITY_CREDENTIALS
Постоянный, который содержит имя свойства среды для того, чтобы определить учетные данные принципала для того, чтобы аутентифицировать вызывающую сторону к службе.
|
static String |
SECURITY_PRINCIPAL
Постоянный, который содержит имя свойства среды для того, чтобы определить идентификационные данные принципала для того, чтобы аутентифицировать вызывающую сторону к службе.
|
static String |
SECURITY_PROTOCOL
Постоянный, который содержит имя свойства среды для того, чтобы определить протокол системы защиты, чтобы использовать.
|
static String |
STATE_FACTORIES
Постоянный, который содержит имя свойства среды для того, чтобы определить список фабрик состояния, чтобы использовать.
|
static String |
URL_PKG_PREFIXES
Постоянный, который содержит имя свойства среды для того, чтобы определить список префиксов пакета, чтобы использовать, загружаясь на фабриках контекста URL.
|
Модификатор и Тип | Метод и Описание |
---|---|
Объект |
addToEnvironment(String propName, Object propVal)
Добавляет новое свойство среды к среде этого контекста.
|
void |
bind(Name name, Object obj)
Связывает имя к объекту.
|
void |
bind(String name, Object obj)
Связывает имя к объекту.
|
void |
close()
Завершения этот контекст.
|
Имя |
composeName(Name name, Name prefix)
Составляет имя этого контекста с именем относительно этого контекста.
|
Строка |
composeName(String name, String prefix)
Составляет имя этого контекста с именем относительно этого контекста.
|
Контекст |
createSubcontext(Name name)
Создает и ограничивает новый контекст.
|
Контекст |
createSubcontext(String name)
Создает и ограничивает новый контекст.
|
void |
destroySubcontext(Name name)
Уничтожает именованный контекст и удаляет это из пространства имен.
|
void |
destroySubcontext(String name)
Уничтожает именованный контекст и удаляет это из пространства имен.
|
Hashtable<?,?> |
getEnvironment()
Получает среду в действительности для этого контекста.
|
Строка |
getNameInNamespace()
Получает полное имя этого контекста в пределах его собственного пространства имен.
|
NameParser |
getNameParser(Name name)
Получает синтаксический анализатор, связанный с именованным контекстом.
|
NameParser |
getNameParser(String name)
Получает синтаксический анализатор, связанный с именованным контекстом.
|
NamingEnumeration<NameClassPair> |
list(Name name)
Перечисляет имена, связанные в именованном контексте, наряду с именами классов объектов, связанных с ними.
|
NamingEnumeration<NameClassPair> |
list(String name)
Перечисляет имена, связанные в именованном контексте, наряду с именами классов объектов, связанных с ними.
|
NamingEnumeration<Binding> |
listBindings(Name name)
Перечисляет имена, связанные в именованном контексте, наряду с объектами, связанными с ними.
|
NamingEnumeration<Binding> |
listBindings(String name)
Перечисляет имена, связанные в именованном контексте, наряду с объектами, связанными с ними.
|
Объект |
lookup(Name name)
Получает именованный объект.
|
Объект |
lookup(String name)
Получает именованный объект.
|
Объект |
lookupLink(Name name)
Получает именованный объект, ссылки за исключением терминального атомарного компонента имени.
|
Объект |
lookupLink(String name)
Получает именованный объект, ссылки за исключением терминального атомарного компонента имени.
|
void |
rebind(Name name, Object obj)
Связывает имя к объекту, перезаписывая любую существующую привязку.
|
void |
rebind(String name, Object obj)
Связывает имя к объекту, перезаписывая любую существующую привязку.
|
Объект |
removeFromEnvironment(String propName)
Удаляет свойство среды из среды этого контекста.
|
void |
rename(Name oldName, Name newName)
Связывает новое имя к объекту, связанному со старым названием, и развязывает старое название.
|
void |
rename(String oldName, String newName)
Связывает новое имя к объекту, связанному со старым названием, и развязывает старое название.
|
void |
unbind(Name name)
Развязывает именованный объект.
|
void |
unbind(String name)
Развязывает именованный объект.
|
static final String INITIAL_CONTEXT_FACTORY
Значение этой константы является "java.naming.factory.initial".
static final String OBJECT_FACTORIES
Значение этой константы является "java.naming.factory.object".
static final String STATE_FACTORIES
Значение этой константы является "java.naming.factory.state".
static final String URL_PKG_PREFIXES
Значение этой константы является "java.naming.factory.url.pkgs".
NamingManager.getObjectInstance(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable<?, ?>)
, NamingManager.getURLContext(java.lang.String, java.util.Hashtable<?, ?>)
, ObjectFactory
, addToEnvironment(String, Object)
, removeFromEnvironment(String)
, APPLET
, Постоянные Значения полейstatic final String PROVIDER_URL
Значение этой константы является "java.naming.provider.url".
static final String DNS_URL
Значение этой константы является "java.naming.dns.url".
static final String AUTHORITATIVE
Значение этой константы является "java.naming.authoritative".
static final String BATCHSIZE
Значение этой константы является "java.naming.batchsize".
static final String REFERRAL
Значение этой константы является "java.naming.referral".
static final String SECURITY_PROTOCOL
Значение этой константы является "java.naming.security.protocol".
static final String SECURITY_AUTHENTICATION
Значение этой константы является "java.naming.security.authentication".
static final String SECURITY_PRINCIPAL
Значение этой константы является "java.naming.security.principal".
static final String SECURITY_CREDENTIALS
Значение этой константы является "java.naming.security.credentials".
static final String LANGUAGE
Значение этой константы является "java.naming.language".
static final String APPLET
Значение этой константы является "java.naming.applet".
addToEnvironment(String, Object)
, removeFromEnvironment(String)
, InitialContext
, Постоянные Значения полейObject lookup(Name name) throws NamingException
name
- имя объекта искатьNamingException
- если с исключением именования встречаютсяlookup(String)
, lookupLink(Name)
Object lookup(String name) throws NamingException
lookup(Name)
для деталей.name
- имя объекта искатьNamingException
- если с исключением именования встречаютсяvoid bind(Name name, Object obj) throws NamingException
name
- имя, чтобы связать; возможно, не пустоobj
- объект связать; возможно нульNameAlreadyBoundException
- если имя уже связываетсяInvalidAttributesException
- если объект не предоставлял все обязательные атрибутыNamingException
- если с исключением именования встречаютсяbind(String, Object)
, rebind(Name, Object)
, DirContext.bind(Name, Object, javax.naming.directory.Attributes)
void bind(String name, Object obj) throws NamingException
bind(Name, Object)
для деталей.name
- имя, чтобы связать; возможно, не пустоobj
- объект связать; возможно нульNameAlreadyBoundException
- если имя уже связываетсяInvalidAttributesException
- если объект не предоставлял все обязательные атрибутыNamingException
- если с исключением именования встречаютсяvoid rebind(Name name, Object obj) throws NamingException
Если объектом является DirContext, любые существующие атрибуты, связанные с именем, заменяются таковыми из объекта. Иначе, любые существующие атрибуты, связанные с именем, остаются неизменными.
name
- имя, чтобы связать; возможно, не пустоobj
- объект связать; возможно нульInvalidAttributesException
- если объект не предоставлял все обязательные атрибутыNamingException
- если с исключением именования встречаютсяrebind(String, Object)
, bind(Name, Object)
, DirContext.rebind(Name, Object, javax.naming.directory.Attributes)
, DirContext
void rebind(String name, Object obj) throws NamingException
rebind(Name, Object)
для деталей.name
- имя, чтобы связать; возможно, не пустоobj
- объект связать; возможно нульInvalidAttributesException
- если объект не предоставлял все обязательные атрибутыNamingException
- если с исключением именования встречаютсяvoid unbind(Name name) throws NamingException
name
от целевого контекста - названное всеми кроме терминальной атомарной части name
. Этот метод является идемпотентом. Это успешно выполняется, даже если терминальное атомарное имя не связывается в целевом контексте, но бросает NameNotFoundException, если какой-либо из промежуточных контекстов не существует.
Удаляются любые атрибуты, связанные с именем. Промежуточные контексты не изменяются.
name
- имя, чтобы развязать; возможно, не пустоNameNotFoundException
- если промежуточный контекст не существуетNamingException
- если с исключением именования встречаютсяunbind(String)
void unbind(String name) throws NamingException
unbind(Name)
для деталей.name
- имя, чтобы развязать; возможно, не пустоNameNotFoundException
- если промежуточный контекст не существуетNamingException
- если с исключением именования встречаютсяvoid rename(Name oldName, Name newName) throws NamingException
oldName
- имя существующей привязки; возможно, не пустоnewName
- имя новой привязки; возможно, не пустоNameAlreadyBoundException
- если newName уже связываетсяNamingException
- если с исключением именования встречаютсяrename(String, String)
, bind(Name, Object)
, rebind(Name, Object)
void rename(String oldName, String newName) throws NamingException
rename(Name, Name)
для деталей.oldName
- имя существующей привязки; возможно, не пустоnewName
- имя новой привязки; возможно, не пустоNameAlreadyBoundException
- если newName уже связываетсяNamingException
- если с исключением именования встречаютсяNamingEnumeration<NameClassPair> list(Name name) throws NamingException
Если привязка добавляется к или удаляется из этого контекста, его эффект на перечисление, ранее возвращенное, неопределен.
name
- имя контекста, чтобы перечислитьNamingException
- если с исключением именования встречаютсяlist(String)
, listBindings(Name)
, NameClassPair
NamingEnumeration<NameClassPair> list(String name) throws NamingException
list(Name)
для деталей.name
- имя контекста, чтобы перечислитьNamingException
- если с исключением именования встречаютсяNamingEnumeration<Binding> listBindings(Name name) throws NamingException
Если привязка добавляется к или удаляется из этого контекста, его эффект на перечисление, ранее возвращенное, неопределен.
name
- имя контекста, чтобы перечислитьNamingException
- если с исключением именования встречаютсяlistBindings(String)
, list(Name)
, Binding
NamingEnumeration<Binding> listBindings(String name) throws NamingException
listBindings(Name)
для деталей.name
- имя контекста, чтобы перечислитьNamingException
- если с исключением именования встречаютсяvoid destroySubcontext(Name name) throws NamingException
Этот метод является идемпотентом. Это успешно выполняется, даже если терминальное атомарное имя не связывается в целевом контексте, но бросает NameNotFoundException, если какой-либо из промежуточных контекстов не существует.
В объединенной в федерацию системе именования контекст от одной системы именования может быть ограничен к имени в другом. Можно впоследствии искать и выполнить операции на внешнем контексте, используя составное имя. Однако, попытка уничтожают контекст, используя это составное имя, перестанет работать с NotContextException, потому что внешний контекст не является "подконтекстом" контекста, в котором это связывается. Вместо этого используйте unbind(), чтобы удалить привязку внешнего контекста. Уничтожение внешнего контекста требует, чтобы destroySubcontext() был выполнен на контексте от "собственной" системы именования внешнего контекста.
name
- имя контекста, который будет уничтожен; возможно, не пустоNameNotFoundException
- если промежуточный контекст не существуетNotContextException
- если имя связывается, но не называет контекст, или не называет контекст соответствующего типаContextNotEmptyException
- если именованный контекст не пустNamingException
- если с исключением именования встречаютсяdestroySubcontext(String)
void destroySubcontext(String name) throws NamingException
destroySubcontext(Name)
для деталей.name
- имя контекста, который будет уничтожен; возможно, не пустоNameNotFoundException
- если промежуточный контекст не существуетNotContextException
- если имя связывается, но не называет контекст, или не называет контекст соответствующего типаContextNotEmptyException
- если именованный контекст не пустNamingException
- если с исключением именования встречаютсяContext createSubcontext(Name name) throws NamingException
name
- имя контекста, чтобы создать; возможно, не пустоNameAlreadyBoundException
- если имя уже связываетсяInvalidAttributesException
- если создание подконтекста требует спецификации обязательных атрибутовNamingException
- если с исключением именования встречаютсяcreateSubcontext(String)
, DirContext.createSubcontext(javax.naming.Name, javax.naming.directory.Attributes)
Context createSubcontext(String name) throws NamingException
createSubcontext(Name)
для деталей.name
- имя контекста, чтобы создать; возможно, не пустоNameAlreadyBoundException
- если имя уже связываетсяInvalidAttributesException
- если создание подконтекста требует спецификации обязательных атрибутовNamingException
- если с исключением именования встречаютсяObject lookupLink(Name name) throws NamingException
name
- имя объекта искатьNamingException
- если с исключением именования встречаютсяlookupLink(String)
Object lookupLink(String name) throws NamingException
lookupLink(Name)
для деталей.name
- имя объекта искатьNamingException
- если с исключением именования встречаютсяNameParser getNameParser(Name name) throws NamingException
name
- имя контекста, от которого можно получить синтаксический анализаторNamingException
- если с исключением именования встречаютсяgetNameParser(String)
, CompoundName
NameParser getNameParser(String name) throws NamingException
getNameParser(Name)
для деталей.name
- имя контекста, от которого можно получить синтаксический анализаторNamingException
- если с исключением именования встречаютсяName composeName(Name name, Name prefix) throws NamingException
name
) относительно этого контекста, и имени (prefix
) из этого контекстно-зависимого одному из его предков, этот метод возвращает состав двух имен, используя синтаксис, подходящий для включенной системы () именования. Таким образом, если name
называет объект относительно этого контекста, результатом является имя того же самого объекта, но относительно контекста предка. Ни одно из имен не может быть нулем. Например, если этот контекст называют "wiz.com" относительно начального контекста, то
composeName("east", "wiz.com")мог бы возвратиться
"east.wiz.com"
. Если вместо этого этот контекст называют "org/research", то composeName("user/jane", "org/research")мог бы возвратиться
"org/research/user/jane"
в то время как composeName("user/jane", "research")возвраты
"research/user/jane"
.name
- имя относительно этого контекстаprefix
- имя этого контекстно-зависимого одному из его предковprefix
и name
NamingException
- если с исключением именования встречаютсяcomposeName(String, String)
String composeName(String name, String prefix) throws NamingException
composeName(Name, Name)
для деталей.name
- имя относительно этого контекстаprefix
- имя этого контекстно-зависимого одному из его предковprefix
и name
NamingException
- если с исключением именования встречаютсяObject addToEnvironment(String propName, Object propVal) throws NamingException
propName
- имя свойства среды, чтобы добавить; возможно, не нульpropVal
- значение свойства, чтобы добавить; возможно, не нульNamingException
- если с исключением именования встречаютсяgetEnvironment()
, removeFromEnvironment(String)
Object removeFromEnvironment(String propName) throws NamingException
propName
- имя свойства среды, чтобы удалить; возможно, не нульNamingException
- если с исключением именования встречаютсяgetEnvironment()
, addToEnvironment(String, Object)
Hashtable<?,?> getEnvironment() throws NamingException
Вызывающая сторона не должна делать изменения в объекте возвращенными: их эффект на контекст неопределен. Среда этого контекста может быть изменена, используя addToEnvironment() и removeFromEnvironment().
NamingException
- если с исключением именования встречаютсяaddToEnvironment(String, Object)
, removeFromEnvironment(String)
void close() throws NamingException
Этот метод является идемпотентом: вызов этого на контексте, который был уже закрыт, не имеет никакого эффекта. Вызов любого другого метода на закрытом контексте не позволяется, и приводит к неопределенному поведению.
NamingException
- если с исключением именования встречаютсяString getNameInNamespace() throws NamingException
У многих служб именования есть понятие "полного имени" для объектов в их соответствующих пространствах имен. Например, у записи LDAP есть отличительное имя, и у записи DNS есть полностью определенное имя. Этот метод позволяет клиентскому приложению получать это имя. Строка, возвращенная этим методом, не является именем составного объекта JNDI и не должна быть передана непосредственно к методам контекста. В именовании систем, для которых понятие полного имени не имеет смысла, бросается OperationNotSupportedException.
OperationNotSupportedException
- если у системы именования нет понятия полного имениNamingException
- если с исключением именования встречаются
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.