Spec-Zone.ru › OpenJDK 21

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

Все известные подинтерфейсы:
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 APPLET
Устаревшее, подлежит удалению: Этот элемент API может быть удалён в будущей версии.
Свойство среды с таким именем игнорируется при создании начального контекста.
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, которые необходимо использовать для контекста URL JNDI (например, "dns://somehost/wiz.com"). Это свойство может быть указано в среде, в системном свойстве или в файле ресурсов. Если оно не указано ни в одном из этих источников, и программа пытается использовать имя DNS в URL JNDI, будет брошено исключение 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)
  • Значения константных полей
END_OF_DOCUMENT_MARKER

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

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

ПРИЛОЖЕНИЕ

@Deprecated(since="9", forRemoval=true) static final String APPLET
Устарело, для удаления: Этот элемент API может быть удален в будущей версии.
Свойство среды с этим именем игнорируется при построении начального контекста. Эта константа первоначально использовалась как имя свойства для указания Applet для извлечения параметров при создании начального контекста. В настоящее время любые свойства приложения, которые необходимо передать в начальный контекст, должны быть скопированы в хеш-таблицу среды:

     Hashtable env = new Hashtable();
     env.put(Context.INITIAL_CONTEXT_FACTORY,
       ((Applet) this).getParameter(Context.INITIAL_CONTEXT_FACTORY));
     env.put(Context.PROVIDER_URL,
       ((Applet) this).getParameter(Context.PROVIDER_URL));
     // ... other properties ...

     Context ctx = new InitialContext(env);
 
С:
1.3
См. также:
  • Значения константных полей

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

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 , если любой из промежуточных контекстов не существует.

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

Parameters:
name - имя для развязывания; не может быть пустым
Throws:
NameNotFoundException - если промежуточный контекст не существует
NamingException - если возникла ошибка именования
See Also:
  • unbind(String)

unbind

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

rename

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

rename

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

list

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

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

Parameters:
name - имя контекста для перечисления
Returns:
перечисление имён и имён классов привязок в этом контексте. Каждый элемент перечисления имеет тип NameClassPair.
Throws:
NamingException - если возникла ошибка именования
See Also:
  • list(String)
  • listBindings(Name)
  • NameClassPair

list

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

listBindings

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

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

Parameters:
name - имя контекста для перечисления
Returns:
перечисление привязок в этом контексте. Каждый элемент перечисления имеет тип Binding.
Throws:
NamingException - если возникла ошибка именования
See Also:
  • listBindings(String)
  • list(Name)
  • Binding

listBindings

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

destroySubcontext

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

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

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

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

destroySubcontext

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

createSubcontext

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

createSubcontext

Context createSubcontext(String name) throws NamingException
Создаёт и связывает новый контекст. Подробности см. в createSubcontext(Name).
Parameters:
name - имя контекста для создания; не может быть пустым
Returns:
только что созданный контекст
Throws:
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, 2023, 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://docs.oracle.com/en/java/javase/21/docs/api/java.naming/javax/naming/Context.html

Spec-Zone.ru

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