Spec-Zone.ru › OpenJDK 17

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

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

Имена

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

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

Для систем, поддерживающих федерацию, параметры имени, передаваемые методам Context, являются составными именами. Параметры имени, которые являются экземплярами CompositeName, обрабатываются как составные имена, в то время как параметры имен, которые не являются экземплярами 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 автоматически собирает и использует все эти списки экспорта при поиске классов фабрик.

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

При создании начального контекста 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, которые необходимо использовать для контекста 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)
  • Значения постоянных полей

АПЛЕТ

@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 - если возникает исключение при именовании
END_OF_DOCUMENT_MARKER

lookupLink

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

lookupLink

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

getNameParser

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

getNameParser

NameParser getNameParser(String name) throws NamingException
Получает парсер, связанный с именованным контекстом. Подробности см. в getNameParser(Name).
Parameters:
name - имя контекста, для которого требуется получить парсер
Returns:
парсер имен, который может разбить составные имена на их атомарные компоненты
Throws:
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".
Parameters:
name - имя, относительное к данному контексту
prefix - имя данного контекста относительно одного из его предков
Returns:
составное имя из prefix и name
Throws:
NamingException - если возникло исключение при работе с именованием
See Also:
  • composeName(String, String)

composeName

String composeName(String name, String prefix) throws NamingException
Создаёт имя данного контекста вместе с именем, относительным к этому контексту. Подробности см. в composeName(Name, Name).
Parameters:
name - имя, относительное к данному контексту
prefix - имя данного контекста относительно одного из его предков
Returns:
составное имя из prefix и name
Throws:
NamingException - если возникло исключение при работе с именованием

addToEnvironment

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

removeFromEnvironment

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

getEnvironment

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

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

Returns:
среда этого контекста; никогда не null
Throws:
NamingException - если возникло исключение при работе с именованием
See Also:
  • addToEnvironment(String, Object)
  • removeFromEnvironment(String)

close

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

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

Throws:
NamingException - если возникло исключение при работе с именованием

getNameInNamespace

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

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

Returns:
имя контекста в его собственном пространстве имён; никогда не null
Throws:
OperationNotSupportedException - если система именования не имеет понятия полного имени
NamingException - если возникло исключение при работе с именованием
Since:
1.3

© 1993, 2021, 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/17/docs/api/java.naming/javax/naming/Context.html

Spec-Zone.ru

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