Spec-Zone.ru › OpenJDK 24

Интерфейс контекста

Все известные подинтерфейсы:
DirContext, EventContext, EventDirContext, LdapContext
Все известные реализующие классы:
InitialContext, InitialDirContext, InitialLdapContext
public interface Context
Этот интерфейс представляет контекст именования, состоящий из набора привязок имя-объект. Он содержит методы для проверки и обновления этих привязок.

Имена

Каждое имя, переданное в качестве аргумента методу Context, относительно этого контекста. Пустое имя используется для именования самого контекста. Параметр имени никогда не должен быть null.

Большинство методов имеют перегруженные версии, одна из которых принимает параметр Name, а другая — String. Эти перегруженные версии эквивалентны в том, что если параметры Name и String представляют одно и то же имя, то перегруженные версии одних и тех же методов ведут себя одинаково. В описаниях методов ниже приведена только одна документированная версия. Вторая версия содержит ссылку на первую: одинаковое описание применимо к обеим версиям.

Для систем, поддерживающих федерацию, аргументы имени String в методах Context являются составными именами. Аргументы имени, которые являются экземплярами CompositeName, обрабатываются как составные имена, а аргументы имени Name, которые не являются экземплярами CompositeName, обрабатываются как составные имена (которые могут быть экземплярами CompoundName или других реализаций составных имён). Это позволяет использовать результаты NameParser.parse() в качестве аргументов для методов Context. До JNDI 1.2 все аргументы имени обрабатывались как составные имена.

Кроме того, для систем, поддерживающих федерацию, все имена, возвращаемые в NamingEnumeration из методов list() и listBindings(), являются составными именами, представленными в виде строк. Смотрите CompositeName для синтаксиса строк имен.

Для систем, не поддерживающих федерацию, аргументы имени (в форматах Name или String) и имена, возвращаемые в NamingEnumeration, могут быть именами в собственном пространстве имён, а не именами в составном пространстве имён, по усмотрению поставщика услуг.

Исключения

Все методы этого интерфейса могут вызывать исключение NamingException или любой его подкласс. Смотрите NamingException и их подклассы для получения подробностей по каждому исключению.

Конкурентный доступ

Гарантии синхронизации экземпляра Context против одновременного доступа нескольких потоков нет. Потоки, которым необходимо получить одновременный доступ к одному экземпляру Context, должны синхронизироваться между собой и обеспечить необходимую блокировку. Несколько потоков, работающих с разными экземплярами Context, синхронизироваться не должны. Обратите внимание, что метод lookup, при передаче пустого имени, вернёт новый экземпляр Context, представляющий тот же контекст именования.

Для целей управления конкурентным доступом операция Context, возвращающая NamingEnumeration, не считается завершённой, пока перечисление используется или пока любые ссылки, сгенерированные этой операцией, ещё не обработаны.

Параметры

Параметр Name, передаваемый любому методу интерфейса Context или его подинтерфейсов, не будет изменён поставщиком услуг. Поставщик услуг может сохранить ссылку на него на протяжении всей операции, включая любое перечисление результатов метода и обработку любых сгенерированных ссылок. Вызывающий метод не должен изменять объект в это время. Name, возвращаемый любым таким методом, принадлежит вызывающему методу. Вызывающий метод может его изменить; поставщик услуг — нет.

Свойства среды

Приложения JNDI нуждаются в способе передачи различных предпочтений и свойств, определяющих среду доступа к именованным и справочным службам. Например, контексту может потребоваться указать учётные данные безопасности для доступа к службе. Другой контекст может потребовать предоставления информации о конфигурации сервера. Это называется средой контекста. Интерфейс Context предоставляет методы для получения и обновления этой среды.

Среда наследуется от родительского контекста по мере того, как методы контекста переходят от одного контекста к другому. Изменения в среде одного контекста не влияют напрямую на другие контексты.

Время использования и проверки свойств среды зависит от реализации. Например, некоторые свойства, связанные с безопасностью, используются поставщиками услуг для «входа» в каталог. Этот процесс входа может произойти при создании контекста или при первом вызове метода в контексте. Когда и происходит ли это вообще, зависит от реализации. При добавлении или удалении свойств среды в контексте проверка их валидности также зависит от реализации. Например, проверка некоторых свойств может произойти в момент внесения изменений, при выполнении следующей операции с контекстом или вообще не произойти.

Любой объект, имеющий ссылку на контекст, может просмотреть среду этого контекста. Чувствительная информация, такая как текстовые пароли, не должна храниться там, если не известно, что реализация её защищает.

Файлы ресурсов

Для упрощения задачи настройки среды, необходимой приложению JNDI, компоненты приложения и поставщики услуг могут распространяться вместе с файлами ресурсов. Файл ресурсов JNDI — это файл в формате файлов свойств (см. java.util.Properties), содержащий список пар ключ/значение. Ключ — это имя свойства (например, "java.naming.factory.object"), а значение — строка в формате, определённом для этого свойства. Вот пример файла ресурсов 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 считывает файлы ресурсов и делает значения свойств доступными. Таким образом, файлы ресурсов JNDI должны рассматриваться как «открытые для чтения», и чувствительная информация, например, текстовые пароли, не должна храниться в них.

Существует два типа файлов ресурсов JNDI: поставщика и приложения.

Файлы ресурсов поставщика

Каждый поставщик услуг имеет необязательный ресурс, который перечисляет свойства, специфичные для этого поставщика. Название этого ресурса:
[префикс/]jndiprovider.properties
где префикс — имя пакета реализации контекста поставщика, причём каждый период (".") заменяется слешем ("/"). Например, предположим, что поставщик услуг определяет реализацию контекста с именем класса com.sun.jndi.ldap.LdapCtx. Файл ресурсов поставщика для этого поставщика имеет имя com/sun/jndi/ldap/jndiprovider.properties. Если класс не находится в пакете, имя ресурса просто jndiprovider.properties.

Некоторые методы в библиотеке классов JNDI используют стандартные свойства JNDI, которые определяют списки фабрик JNDI:

  • java.naming.factory.object
  • java.naming.factory.state
  • java.naming.factory.control
  • java.naming.factory.url.pkgs
Библиотека JNDI обращается к файлу ресурсов поставщика при определении значений этих свойств. Другие свойства могут быть установлены в файле ресурсов поставщика по усмотрению поставщика услуг. Документация поставщика услуг должна чётко указывать, какие свойства разрешены; другие свойства в файле будут проигнорированы.

Файлы ресурсов приложения

При развертывании приложения обычно используются несколько каталогов кода и JAR-файлов в пути класса. JNDI находит (используя ClassLoader.getResources()) все файлы ресурсов приложения с именем jndi.properties в пути класса. Кроме того, если в каталоге установки Java есть встроенный файл свойств, обычно conf/jndi.properties, JNDI рассматривает его как дополнительный файл ресурсов приложения. Все свойства, содержащиеся в этих файлах, помещаются в среду начального контекста. Затем эта среда наследуется другими контекстами.

Для каждого свойства, найденного в более чем одном файле ресурсов приложения, JNDI использует первое найденное значение или, в некоторых случаях, когда это имеет смысл, склеивает все значения (подробности даны ниже). Например, если свойство "java.naming.factory.object" найдено в трёх файлах ресурсов jndi.properties, список фабрик объектов — это конкатенация значений свойства из всех трёх файлов. Используя эту схему, каждый развёртываемый компонент отвечает за перечисление фабрик, которые он экспортирует. JNDI автоматически собирает и использует все эти списки экспорта при поиске классов фабрик.

Алгоритм поиска свойств

При построении начального контекста JNDI среда контекста инициализируется свойствами, определёнными в параметре среды, переданном в конструктор, системными свойствами и файлами ресурсов приложения. Подробности см. в InitialContext. Эта начальная среда затем наследуется другими экземплярами контекста.

Когда библиотека классов JNDI должна определить значение свойства, она делает это, объединив значения из следующих двух источников в указанном порядке:

  1. Среда контекста, с которым выполняется операция.
  2. Файл ресурсов поставщика (jndiprovider.properties) для контекста, с которым выполняется операция.
Для каждого свойства, найденного в обоих этих источниках, JNDI определяет значение свойства следующим образом. Если это одно из стандартных свойств JNDI, которое определяет список фабрик JNDI (перечисленные выше), значения склеиваются в единый список, разделённый двоеточием. Для других свойств используется только первое найденное значение.

Когда поставщику услуг требуется определить значение свойства, он обычно берёт это значение непосредственно из среды. Поставщик услуг может определить свойства, специфичные для поставщика, которые должны быть помещены в свой собственный файл ресурсов поставщика. В этом случае он должен объединить значения, как описано в предыдущем абзаце.

Таким образом, каждый разработчик поставщика услуг может указать список фабрик, которые нужно использовать с этим поставщиком услуг. Их можно изменить ресурсами приложения, указанными разработчиком приложения, которые, в свою очередь, могут быть изменены пользователем.

С момента:
1.3

Краткое описание полей

Модификатор и тип Поле Описание
static final String AUTHORITATIVE
Константа, содержащая имя свойства среды для указания авторитетности запрашиваемой службы.
static final String BATCHSIZE
Константа, содержащая имя свойства среды для указания размера пакета для возврата данных через протокол службы.
static final String DNS_URL
Константа, содержащая имя свойства среды для указания имени хоста и домена DNS для использования в контексте URL JNDI (например, "dns://somehost/wiz.com").
static final String INITIAL_CONTEXT_FACTORY
Константа, содержащая имя свойства среды для указания фабрики контекста по умолчанию для использования.
static final String LANGUAGE
Константа, содержащая имя свойства среды для указания предпочтительного языка для использования со службой.
static final String OBJECT_FACTORIES
Константа, содержащая имя свойства среды для указания списка фабрик объектов для использования.
static final String PROVIDER_URL
Константа, содержащая имя свойства среды для указания конфигурационной информации для использования поставщиком услуг.
static final String REFERRAL
Константа, содержащая имя свойства среды для указания способа обработки ссылок, встречающихся поставщиком услуг.
static final String SECURITY_AUTHENTICATION
Константа, содержащая имя свойства среды для указания уровня безопасности для использования.
static final String SECURITY_CREDENTIALS
Константа, содержащая имя свойства среды для указания учетных данных принципала для аутентификации вызывающего абонента для службы.
static final String SECURITY_PRINCIPAL
Константа, содержащая имя свойства среды для указания идентификатора принципала для аутентификации вызывающего абонента для службы.
static final String SECURITY_PROTOCOL
Константа, содержащая имя свойства среды для указания протокола безопасности для использования.
static final String STATE_FACTORIES
Константа, содержащая имя свойства среды для указания списка фабрик состояний для использования.
static final String URL_PKG_PREFIXES
Константа, содержащая имя свойства среды для указания списка префиксов пакетов для использования при загрузке фабрик контекстов URL.

Краткое описание методов

Модификатор и тип Метод Описание
Object addToEnvironment(String propName, Object propVal)
Добавляет новое свойство среды в среду этого контекста.
void bind(String name, Object obj)
Связывает имя с объектом.
void bind(Name name, Object obj)
Связывает имя с объектом.
void close()
Закрывает этот контекст.
String composeName(String name, String prefix)
Компонует имя этого контекста с именем, относительным к этому контексту.
Name composeName(Name name, Name prefix)
Компонует имя этого контекста с именем, относительным к этому контексту.
Context createSubcontext(String name)
Создает и связывает новый контекст.
Context createSubcontext(Name name)
Создает и связывает новый контекст.
void destroySubcontext(String name)
Уничтожает именованный контекст и удаляет его из пространства имен.
void destroySubcontext(Name name)
Уничтожает именованный контекст и удаляет его из пространства имен.
Hashtable<?,?> getEnvironment()
Возвращает среду, действующую для этого контекста.
String getNameInNamespace()
Возвращает полное имя этого контекста в его собственном пространстве имен.
NameParser getNameParser(String name)
Возвращает парсер, связанный с именованным контекстом.
NameParser getNameParser(Name name)
Возвращает парсер, связанный с именованным контекстом.
NamingEnumeration<NameClassPair> list(String name)
Перечисляет имена, связанные в именованном контексте, вместе с именами классов объектов, связанных с ними.
NamingEnumeration<NameClassPair> list(Name name)
Перечисляет имена, связанные в именованном контексте, вместе с именами классов объектов, связанных с ними.
NamingEnumeration<Binding> listBindings(String name)
Перечисляет имена, связанные в именованном контексте, вместе с связанными с ними объектами.
NamingEnumeration<Binding> listBindings(Name name)
Перечисляет имена, связанные в именованном контексте, вместе с связанными с ними объектами.
Object lookup(String name)
Возвращает именованный объект.
Object lookup(Name name)
Возвращает именованный объект.
Object lookupLink(String name)
Возвращает именованный объект, следуя ссылкам, за исключением конечного атомного компонента имени.
Object lookupLink(Name name)
Возвращает именованный объект, следуя ссылкам, за исключением конечного атомного компонента имени.
void rebind(String name, Object obj)
Связывает имя с объектом, перезаписывая любое существующее связывание.
void rebind(Name name, Object obj)
Связывает имя с объектом, перезаписывая любое существующее связывание.
Object removeFromEnvironment(String propName)
Удаляет свойство среды из среды этого контекста.
void rename(String oldName, String newName)
Связывает новое имя с объектом, связанным со старым именем, и отвязывает старое имя.
void rename(Name oldName, Name newName)
Связывает новое имя с объектом, связанным со старым именем, и отвязывает старое имя.
void unbind(String name)
Отвязывает именованный объект.
void unbind(Name name)
Отвязывает именованный объект.

Подробное описание полей

INITIAL_CONTEXT_FACTORY

static final String INITIAL_CONTEXT_FACTORY
Константа, содержащая имя свойства среды для указания используемой фабрики начального контекста. Значение свойства должно быть полным квалифицированным именем класса фабрики, который будет создавать начальный контекст. Это свойство может быть задано в параметре среды, переданном конструктору начального контекста, системном свойстве или файле ресурсов приложения. Если оно не указано ни в одном из этих источников, при необходимости создания начального контекста для завершения операции будет брошено исключение NoInitialContextException.

Значение этой константы равно "java.naming.factory.initial".

См. также:
  • InitialContext
  • InitialDirContext
  • NamingManager.getInitialContext(java.util.Hashtable<?, ?>)
  • InitialContextFactory
  • NoInitialContextException
  • addToEnvironment(String, Object)
  • removeFromEnvironment(String)
  • Значения константных полей

OBJECT_FACTORIES

static final String OBJECT_FACTORIES
Константа, содержащая имя свойства среды для указания списка используемых фабрик объектов. Значение свойства должно быть списком фабрик объектов, разделенных двоеточием, с полными квалифицированными именами классов фабрик, которые будут создавать объект на основе информации об объекте. Это свойство может быть указано в среде, системном свойстве или одном или нескольких файлах ресурсов.

Значение этой константы равно "java.naming.factory.object".

См. также:
  • NamingManager.getObjectInstance(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable<?, ?>)
  • ObjectFactory
  • addToEnvironment(String, Object)
  • removeFromEnvironment(String)
  • Значения константных полей

STATE_FACTORIES

static final String STATE_FACTORIES
Константа, содержащая имя свойства среды для указания списка используемых фабрик состояния. Значение свойства должно быть списком, разделенным двоеточием, полных квалифицированных имён классов фабрик состояния, которые будут использоваться для получения состояния объекта на основе самого объекта. Это свойство может быть указано в среде, системном свойстве или в одном или нескольких файлах ресурсов.

Значение этой константы равно "java.naming.factory.state".

С момента:
1.3
См. также:
  • NamingManager.getStateToBind(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable<?, ?>)
  • StateFactory
  • addToEnvironment(String, Object)
  • removeFromEnvironment(String)
  • Значения константных полей

URL_PKG_PREFIXES

static final String URL_PKG_PREFIXES
Константа, содержащая имя свойства среды для указания списка префиксов пакетов, используемых при загрузке фабрик контекста URL. Значение свойства должно быть списком, разделённым двоеточием, префиксов пакетов для имени класса фабрики, которая будет создавать фабрику контекста URL. Это свойство может быть задано в среде, системном свойстве или одном или нескольких файлах ресурсов. Префикс com.sun.jndi.url всегда добавляется к возможно пустому списку префиксов пакетов.

Значение этой константы равно "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)
  • Значения константных полей

PROVIDER_URL

static final String PROVIDER_URL
Константа, содержащая имя свойства среды для указания конфигурационной информации для использования поставщиком сервиса. Значение свойства должно содержать строку URL (например, "ldap://somehost:389"). Это свойство может быть указано в среде, системном свойстве или файле ресурсов. Если оно не указано ни в одном из этих источников, конфигурация по умолчанию определяется поставщиком сервиса.

Значение этой константы равно "java.naming.provider.url".

См. также:
  • addToEnvironment(String, Object)
  • removeFromEnvironment(String)
  • Значения константных полей

DNS_URL

static final String DNS_URL
Константа, содержащая имя свойства среды для указания имен хоста и домена DNS, используемых для контекста JNDI URL (например, "dns://somehost/wiz.com"). Это свойство может быть указано в среде, системном свойстве или файле ресурсов. Если оно не указано ни в одном из этих источников, и программа пытается использовать JNDI URL, содержащий имя DNS, будет брошено исключение ConfigurationException.

Значение этой константы равно "java.naming.dns.url".

См. также:
  • addToEnvironment(String, Object)
  • removeFromEnvironment(String)
  • Значения константных полей

AUTHORITATIVE

static final String AUTHORITATIVE
Константа, содержащая имя свойства среды для указания авторитетности запрашиваемого сервиса. Если значение свойства равно строке "true", это означает, что доступ осуществляется к самому авторитетному источнику (т.е. обход любого кеша или реплик). Если значение - другое, источник необязательно (но может быть) авторитетным. Если не указано, значение по умолчанию - "false".

Значение этой константы равно "java.naming.authoritative".

См. также:
  • addToEnvironment(String, Object)
  • removeFromEnvironment(String)
  • Значения константных полей

BATCHSIZE

static final String BATCHSIZE
Константа, содержащая имя свойства среды для указания размера пакета, используемого при возврате данных через протокол сервиса. Это подсказка для поставщика о возврате результатов операций партиями указанного размера, чтобы поставщик мог оптимизировать свою производительность и использование ресурсов. Значение свойства — строковое представление целого числа. Если не указано, размер пакета определяется поставщиком сервиса.

Значение этой константы равно "java.naming.batchsize".

См. также:
  • addToEnvironment(String, Object)
  • removeFromEnvironment(String)
  • Значения константных полей

REFERRAL

static final String REFERRAL
Константа, содержащая имя свойства среды для указания способа обработки перенаправлений, встречаемых поставщиком сервиса. Значение свойства — одна из следующих строк:
"follow"
следовать перенаправлениям автоматически
"ignore"
игнорировать перенаправления
"throw"
бросить исключение ReferralException при встрече перенаправления.
Если это свойство не указано, значение по умолчанию определяется поставщиком.

Значение этой константы равно "java.naming.referral".

См. также:
  • addToEnvironment(String, Object)
  • removeFromEnvironment(String)
  • Значения константных полей

ПРОТОКОЛ_БЕЗОПАСНОСТИ

static final String SECURITY_PROTOCOL
Константа, содержащая имя свойства среды для указания используемого протокола безопасности. Его значение — строка, определяемая поставщиком службы (например, "ssl"). Если это свойство не указано, поведение определяется поставщиком службы.

Значение этой константы — "java.naming.security.protocol".

См. также:
  • addToEnvironment(String, Object)
  • removeFromEnvironment(String)
  • Значения константных полей

АВТОРИЗАЦИЯ_БЕЗОПАСНОСТИ

static final String SECURITY_AUTHENTICATION
Константа, содержащая имя свойства среды для указания уровня безопасности. Его значение — одна из следующих строк: "none", "simple", "strong". Если это свойство не указано, поведение определяется поставщиком службы.

Значение этой константы — "java.naming.security.authentication".

См. также:
  • addToEnvironment(String, Object)
  • removeFromEnvironment(String)
  • Значения константных полей

ПРИНЦИПАЛ_БЕЗОПАСНОСТИ

static final String SECURITY_PRINCIPAL
Константа, содержащая имя свойства среды для указания идентификатора принципала для аутентификации вызывающего абонента в службе. Формат принципала зависит от схемы аутентификации. Если это свойство не указано, поведение определяется поставщиком службы.

Значение этой константы — "java.naming.security.principal".

См. также:
  • addToEnvironment(String, Object)
  • removeFromEnvironment(String)
  • Значения константных полей

КРЕДИЕНЦИАЛЫ_БЕЗОПАСНОСТИ

static final String SECURITY_CREDENTIALS
Константа, содержащая имя свойства среды для указания учетных данных принципала для аутентификации вызывающего абонента в службе. Значение свойства зависит от схемы аутентификации. Например, это может быть хэшированный пароль, пароль в открытом тексте, ключ, сертификат и т. д. Если это свойство не указано, поведение определяется поставщиком службы.

Значение этой константы — "java.naming.security.credentials".

См. также:
  • addToEnvironment(String, Object)
  • removeFromEnvironment(String)
  • Значения константных полей

ЯЗЫК

static final String LANGUAGE
Константа, содержащая имя свойства среды для указания предпочтительного языка для использования с сервисом. Значение свойства — список тегов языка, разделенных двоеточием, как определено в RFC 1766. Если это свойство не указано, предпочтение языка определяется поставщиком службы.

Значение этой константы — "java.naming.language".

См. также:
  • addToEnvironment(String, Object)
  • removeFromEnvironment(String)
  • Значения константных полей

Подробное описание методов

lookup

Object lookup(Name name) throws NamingException
Извлекает именованный объект. Если name пусто, возвращает новый экземпляр этого контекста (который представляет тот же контекст именования, что и этот контекст, но его окружение может быть изменено независимо, и к нему можно получить доступ параллельно).
Параметры:
name - имя объекта для поиска
Возвращает:
объект, связанный с name
Исключения:
NamingException - если возникло исключение именования
См. также:
  • lookup(String)
  • lookupLink(Name)

lookup

Object lookup(String name) throws NamingException
Извлекает именованный объект. Подробнее см. lookup(Name).
Параметры:
name - имя объекта для поиска
Возвращает:
объект, связанный с name
Исключения:
NamingException - если возникло исключение именования

bind

void bind(Name name, Object obj) throws NamingException
Связывает имя с объектом. Все промежуточные контексты и целевой контекст (именуемый всеми, кроме конечного атомного компонента имени) должны уже существовать.
Параметры:
name - имя для связывания; не должно быть пустым
obj - объект для связывания; возможно null
Исключения:
NameAlreadyBoundException - если имя уже связано
InvalidAttributesException - если объект не предоставил все обязательные атрибуты
NamingException - если возникло исключение именования
См. также:
  • bind(String, Object)
  • rebind(Name, Object)
  • DirContext.bind(Name, Object, javax.naming.directory.Attributes)

bind

void bind(String name, Object obj) throws NamingException
Связывает имя с объектом. Подробнее см. bind(Name, Object).
Параметры:
name - имя для связывания; не должно быть пустым
obj - объект для связывания; возможно null
Исключения:
NameAlreadyBoundException - если имя уже связано
InvalidAttributesException - если объект не предоставил все обязательные атрибуты
NamingException - если возникло исключение именования

rebind

void rebind(Name name, Object obj) throws NamingException
Связывает имя с объектом, перезаписывая любое существующее связывание. Все промежуточные контексты и целевой контекст (именуемый всеми, кроме конечного атомного компонента имени) должны уже существовать.

Если объект является DirContext, любые существующие атрибуты, связанные с именем, заменяются атрибутами объекта. В противном случае любые существующие атрибуты, связанные с именем, остаются неизменными.

Параметры:
name - имя для связывания; не должно быть пустым
obj - объект для связывания; возможно null
Исключения:
InvalidAttributesException - если объект не предоставил все обязательные атрибуты
NamingException - если возникло исключение именования
См. также:
  • rebind(String, Object)
  • bind(Name, Object)
  • DirContext.rebind(Name, Object, javax.naming.directory.Attributes)
  • DirContext

rebind

void rebind(String name, Object obj) throws NamingException
Связывает имя с объектом, перезаписывая любое существующее связывание. Подробнее см. rebind(Name, Object).
Параметры:
name - имя для связывания; не должно быть пустым
obj - объект для связывания; возможно null
Исключения:
InvalidAttributesException - если объект не предоставил все обязательные атрибуты
NamingException - если возникло исключение именования

unbind

void unbind(Name name) throws NamingException
Удаляет именованный объект. Удаляет конечное атомное имя в name из целевого контекста — контекста, именуемого всеми, кроме конечной атомной части name.

Этот метод идемпотентен. Он выполняется успешно, даже если конечное атомное имя не связано в целевом контексте, но выбросит NameNotFoundException, если любой из промежуточных контекстов не существует.

Все атрибуты, связанные с именем, удаляются. Промежуточные контексты не изменяются.

Параметры:
name - имя для удаления; не должно быть пустым
Исключения:
NameNotFoundException - если промежуточный контекст не существует
NamingException - если возникло исключение именования
См. также:
  • unbind(String)

unbind

void unbind(String name) throws NamingException
Отвязывает именованный объект. Смотрите unbind(Name) для подробностей.
Параметры:
name - имя для отвязки; не может быть пустым
Исключения:
NameNotFoundException - если промежуточный контекст не существует
NamingException - если возникло исключение при именовании

rename

void rename(Name oldName, Name newName) throws NamingException
Связывает новое имя с объектом, связанным со старым именем, и отвязывает старое имя. Оба имени относительны к этому контексту. Любые атрибуты, связанные со старым именем, ассоциируются с новым именем. Промежуточные контексты старого имени не изменяются.
Параметры:
oldName - имя существующей связи; не может быть пустым
newName - имя новой связи; не может быть пустым
Исключения:
NameAlreadyBoundException - если newName уже привязано
NamingException - если возникло исключение при именовании
См. также:
  • rename(String, String)
  • bind(Name, Object)
  • rebind(Name, Object)

rename

void rename(String oldName, String newName) throws NamingException
Связывает новое имя с объектом, связанным со старым именем, и отвязывает старое имя. Смотрите rename(Name, Name) для подробностей.
Параметры:
oldName - имя существующей связи; не может быть пустым
newName - имя новой связи; не может быть пустым
Исключения:
NameAlreadyBoundException - если newName уже привязано
NamingException - если возникло исключение при именовании

list

NamingEnumeration<NameClassPair> list(Name name) throws NamingException
Перечисляет имена, привязанные в именованном контексте, вместе с именами классов объектов, привязанных к ним. Содержимое любых подконтекстов не включается.

Если привязка добавлена или удалена из этого контекста, ее влияние на ранее возвращенное перечисление не определено.

Параметры:
name - имя контекста для перечисления
Возвращает:
перечисление имен и имен классов привязок в этом контексте. Каждый элемент перечисления имеет тип NameClassPair.
Исключения:
NamingException - если возникло исключение при именовании
См. также:
  • list(String)
  • listBindings(Name)
  • NameClassPair

list

NamingEnumeration<NameClassPair> list(String name) throws NamingException
Перечисляет имена, привязанные в именованном контексте, вместе с именами классов объектов, привязанных к ним. Смотрите list(Name) для подробностей.
Параметры:
name - имя контекста для перечисления
Возвращает:
перечисление имен и имен классов привязок в этом контексте. Каждый элемент перечисления имеет тип NameClassPair.
Исключения:
NamingException - если возникло исключение при именовании

listBindings

NamingEnumeration<Binding> listBindings(Name name) throws NamingException
Перечисляет имена, привязанные в именованном контексте, вместе с объектами, привязанными к ним. Содержимое любых подконтекстов не включается.

Если привязка добавлена или удалена из этого контекста, ее влияние на ранее возвращенное перечисление не определено.

Параметры:
name - имя контекста для перечисления
Возвращает:
перечисление привязок в этом контексте. Каждый элемент перечисления имеет тип Binding.
Исключения:
NamingException - если возникло исключение при именовании
См. также:
  • listBindings(String)
  • list(Name)
  • Binding

listBindings

NamingEnumeration<Binding> listBindings(String name) throws NamingException
Перечисляет имена, привязанные в именованном контексте, вместе с объектами, привязанными к ним. Смотрите listBindings(Name) для подробностей.
Параметры:
name - имя контекста для перечисления
Возвращает:
перечисление привязок в этом контексте. Каждый элемент перечисления имеет тип Binding.
Исключения:
NamingException - если возникло исключение при именовании

destroySubcontext

void destroySubcontext(Name name) throws NamingException
Удаляет именованный контекст и удаляет его из пространства имен. Все атрибуты, связанные с именем, также удаляются. Промежуточные контексты не удаляются.

Этот метод идемпотентен. Он выполняется успешно, даже если конечное атомарное имя не привязано в целевом контексте, но генерирует NameNotFoundException, если какой-либо из промежуточных контекстов не существует.

В федеративной системе именования контекст из одной системы именования может быть связан с именем в другой. Затем можно найти и выполнить операции на внешнем контексте, используя составное имя. Однако попытка удалить контекст с помощью этого составного имени завершится ошибкой NotContextException, потому что внешний контекст не является "подконтекстом" контекста, в котором он связан. Вместо этого используйте unbind() для удаления привязки внешнего контекста. Для удаления внешнего контекста требуется выполнить destroySubcontext() в контексте из "родной" системы именования внешнего контекста.

Параметры:
name - имя контекста, который будет удален; не может быть пустым
Исключения:
NameNotFoundException - если промежуточный контекст не существует
NotContextException - если имя привязано, но не обозначает контекст или не обозначает контекст соответствующего типа
ContextNotEmptyException - если именованный контекст не пуст
NamingException - если возникло исключение при именовании
См. также:
  • destroySubcontext(String)

destroySubcontext

void destroySubcontext(String name) throws NamingException
Удаляет именованный контекст и удаляет его из пространства имен. Смотрите destroySubcontext(Name) для подробностей.
Параметры:
name - имя контекста, который будет удален; не может быть пустым
Исключения:
NameNotFoundException - если промежуточный контекст не существует
NotContextException - если имя привязано, но не обозначает контекст или не обозначает контекст соответствующего типа
ContextNotEmptyException - если именованный контекст не пуст
NamingException - если возникло исключение при именовании

createSubcontext

Context createSubcontext(Name name) throws NamingException
Создает и связывает новый контекст. Создает новый контекст с заданным именем и связывает его в целевом контексте (указанном всеми компонентами имени, кроме конечного атомарного). Все промежуточные контексты и целевой контекст должны уже существовать.
Параметры:
name - имя контекста для создания; не может быть пустым
Возвращает:
созданный контекст
Исключения:
NameAlreadyBoundException - если имя уже привязано
InvalidAttributesException - если для создания подконтекста требуется указание обязательных атрибутов
NamingException - если возникло исключение при именовании
См. также:
  • createSubcontext(String)
  • DirContext.createSubcontext(javax.naming.Name, javax.naming.directory.Attributes)

createSubcontext

Context createSubcontext(String name) throws NamingException
Создает и связывает новый контекст. Смотрите createSubcontext(Name) для подробностей.
Параметры:
name - имя контекста для создания; не может быть пустым
Возвращает:
созданный контекст
Исключения:
NameAlreadyBoundException - если имя уже привязано
InvalidAttributesException - если для создания подконтекста требуется указание обязательных атрибутов
NamingException - если возникло исключение при именовании

lookupLink

Object lookupLink(Name name) throws NamingException
Возвращает именованный объект, следуя ссылкам, за исключением конечного атомарного компонента имени. Если объект, связанный с name, не является ссылкой, возвращает сам объект.
Параметры:
name - имя объекта для поиска
Возвращает:
объект, связанный с name, не следуя конечной ссылке (если она есть).
Исключения:
NamingException - если возникло исключение при именовании
См. также:
  • lookupLink(String)

lookupLink

Object lookupLink(String name) throws NamingException
Возвращает именованный объект, следуя ссылкам, за исключением конечного атомарного компонента имени. Подробности см. в lookupLink(Name).
Параметры:
name - имя объекта для поиска
Возвращает:
объект, привязанный к name, не следуя конечной ссылке (если таковая имеется)
Исключения:
NamingException - если возникло исключение при именовании

getNameParser

NameParser getNameParser(Name name) throws NamingException
Возвращает парсер, связанный с именованным контекстом. В федерации пространств имён разные системы именования будут по-разному анализировать имена. Этот метод позволяет приложению получить парсер для разбора имён на их атомарные компоненты с использованием соглашений об именовании конкретной системы именования. В рамках любой одной системы именования объекты NameParser, возвращаемые этим методом, должны быть равны (используя тест equals()).
Параметры:
name - имя контекста, из которого нужно получить парсер
Возвращает:
парсер имён, который может разделить составные имена на их атомарные компоненты
Исключения:
NamingException - если возникло исключение при именовании
См. также:
  • getNameParser(String)
  • CompoundName

getNameParser

NameParser getNameParser(String name) throws NamingException
Возвращает парсер, связанный с именованным контекстом. Подробности см. в getNameParser(Name).
Параметры:
name - имя контекста, из которого нужно получить парсер
Возвращает:
парсер имён, который может разделить составные имена на их атомарные компоненты
Исключения:
NamingException - если возникло исключение при именовании

composeName

Name composeName(Name name, Name prefix) throws NamingException
Компонует имя этого контекста с именем, относительным к этому контексту. Учитывая имя (name), относительное к этому контексту, и имя (prefix) этого контекста относительно одного из его предков, этот метод возвращает композицию двух имён, используя синтаксис, соответствующий вовлечённым системам именования. То есть, если name назначает объект относительно этого контекста, результат — имя того же объекта, но относительно контекста предка. Ни одно из имён не должно быть null.

Например, если этот контекст имеет имя "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)

composeName

String composeName(String name, String prefix) throws NamingException
Компонует имя этого контекста с именем, относительным к этому контексту. Подробности см. в composeName(Name, Name).
Параметры:
name - имя, относительное к этому контексту
prefix - имя этого контекста относительно одного из его предков
Возвращает:
композицию prefix и name
Исключения:
NamingException - если возникло исключение при именовании

addToEnvironment

Object addToEnvironment(String propName, Object propVal) throws NamingException
Добавляет новую среду свойств к среде этого контекста. Если свойство уже существует, его значение перезаписывается. Подробнее о свойствах среды см. описание класса.
Параметры:
propName - имя свойства среды для добавления; не должно быть null
propVal - значение свойства для добавления; не должно быть null
Возвращает:
предыдущее значение свойства или null, если свойство не было в среде ранее
Исключения:
NamingException - если возникло исключение при именовании
См. также:
  • getEnvironment()
  • removeFromEnvironment(String)

removeFromEnvironment

Object removeFromEnvironment(String propName) throws NamingException
Удаляет свойство среды из среды этого контекста. Подробнее о свойствах среды см. описание класса.
Параметры:
propName - имя свойства среды для удаления; не должно быть null
Возвращает:
предыдущее значение свойства или null, если свойство не было в среде
Исключения:
NamingException - если возникло исключение при именовании
См. также:
  • getEnvironment()
  • addToEnvironment(String, Object)

getEnvironment

Hashtable<?,?> getEnvironment() throws NamingException
Возвращает среду, действующую для данного контекста. Подробнее о свойствах среды см. описание класса.

Вызывающий метод не должен вносить изменений в возвращаемый объект: их воздействие на контекст не определено. Среду этого контекста можно изменить с помощью addToEnvironment() и removeFromEnvironment().

Возвращает:
среду этого контекста; никогда не null
Исключения:
NamingException - если возникло исключение при именовании
См. также:
  • addToEnvironment(String, Object)
  • removeFromEnvironment(String)

close

void close() throws NamingException
Закрывает этот контекст. Этот метод освобождает ресурсы этого контекста немедленно, а не ожидая их автоматического освобождения сборщиком мусора.

Этот метод идемпотентен: вызов его для контекста, который уже был закрыт, не оказывает никакого влияния. Вызов любого другого метода на закрытом контексте запрещён и приводит к неопределённому поведению.

Исключения:
NamingException - если возникло исключение при именовании

getNameInNamespace

String getNameInNamespace() throws NamingException
Возвращает полное имя этого контекста в своём собственном пространстве имён.

Многие службы именования имеют понятие "полного имени" для объектов в своих соответствующих пространствах имён. Например, у записи LDAP есть имя различения, а у записи DNS есть полное квалифицированное имя. Этот метод позволяет клиентскому приложению получить это имя. Строка, возвращаемая этим методом, не является составным именем JNDI и не должна передаваться напрямую методам контекста. В системах именования, для которых понятие полного имени не имеет смысла, выбрасывается OperationNotSupportedException.

Возвращает:
имя контекста в его собственном пространстве имён; никогда не null
Исключения:
OperationNotSupportedException - если система именования не имеет понятия полного имени
NamingException - если возникло исключение при именовании
С тех пор как:
1.3

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/java.naming/javax/naming/Context.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API