Spec-Zone.ru › OpenJDK 27

Класс NamingManager

java.lang.Object
javax.naming.spi.NamingManager
Прямые известные подклассы:
DirectoryManager
public class NamingManager extends Object
Этот класс содержит методы для создания объектов контекста и объектов, на которые указывает информация о местоположении в службе именования или службе каталогов.

Этот класс нельзя создать. Он содержит только статические методы.

Упоминание URL в документации к этому классу относится к строке URL, определённой в RFC 1738 и связанных с ним RFC. Это любая строка, соответствующая описанному в них синтаксису; при этом поддержка такой строки не всегда предусмотрена классом java.net.URL или веб-браузерами.

NamingManager безопасен для одновременного использования несколькими потоками.

Если не указано иное, объект Name или параметр среды, переданный любому методу, принадлежит вызывающему коду. Реализация не изменяет этот объект и не сохраняет ссылку на него, хотя может сохранить ссылку на его клон или копию.

С версии:
1.3

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

Модификатор и тип Поле Описание
static final String CPE
Константа, содержащая имя свойства среды, в которое getContinuationContext() сохраняет значение своего параметра CannotProceedException.

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

Модификатор и тип Метод Описание
static Context getContinuationContext(CannotProceedException cpe)
Создаёт контекст, в котором можно продолжить операцию с контекстом.
static Context getInitialContext(Hashtable<?,?> env)
Создаёт начальный контекст с использованием указанных свойств среды.
static Object getObjectInstance(Object refInfo, Name name, Context nameCtx, Hashtable<?,?> environment)
Создаёт экземпляр объекта для указанного объекта и среды.
static Object getStateToBind(Object obj, Name name, Context nameCtx, Hashtable<?,?> environment)
Получает состояние объекта для привязки.
static Context getURLContext(String scheme, Hashtable<?,?> environment)
Создаёт контекст для указанного идентификатора схемы URL.
static boolean hasInitialContextFactoryBuilder()
Определяет, задан ли построитель фабрики начального контекста.
static void setInitialContextFactoryBuilder(InitialContextFactoryBuilder builder)
Устанавливает builder в качестве построителя InitialContextFactory.
static void setObjectFactoryBuilder(ObjectFactoryBuilder builder)
ObjectFactoryBuilder определяет политику, применяемую при попытке загрузить фабрики объектов.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, является ли другой объект «равным» этому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии.
Финализация объявлена устаревшей и подлежит удалению в одном из следующих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает значение хеш-кода этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного промежутка реального времени.

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

CPE

public static final String CPE
Константа, содержащая имя свойства среды, в которое getContinuationContext() сохраняет значение параметра CannotProceedException. Это свойство наследуется контекстом продолжения и может использоваться поставщиком службы этого контекста для проверки полей исключения.

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

С версии:
1.3
См. также:
  • getContinuationContext(CannotProceedException)
  • Значения констант полей

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

setObjectFactoryBuilder

public static void setObjectFactoryBuilder(ObjectFactoryBuilder builder) throws NamingException
ObjectFactoryBuilder определяет политику, применяемую при попытке загрузить фабрики объектов. Описание политики по умолчанию см. в getObjectInstance() и классе ObjectFactory. Метод setObjectFactoryBuilder() переопределяет эту политику по умолчанию, устанавливая ObjectFactoryBuilder. Последующие фабрики объектов будут загружаться и создаваться с помощью установленного построителя.
Параметры:
builder — построитель фабрики для установки. Если значение равно null, построитель не устанавливается.
Выбрасывает:
NamingException — построитель нельзя установить по причине, не связанной с безопасностью.
IllegalStateException — если фабрика уже была установлена.
См. также:
  • getObjectInstance(Object, Name, Context, Hashtable)
  • ObjectFactory
  • ObjectFactoryBuilder

getObjectInstance

public static Object getObjectInstance(Object refInfo, Name name, Context nameCtx, Hashtable<?,?> environment) throws Exception
Создаёт экземпляр объекта для указанного объекта и среды.

Если установлен построитель фабрики объектов, он используется для создания фабрики, которая создаёт объект. В противном случае для создания объекта применяются следующие правила:

  1. Если refInfo — это Reference или Referenceable, содержащий имя класса фабрики, используйте указанную фабрику для создания объекта. Возвратите refInfo, если фабрику создать не удалось. Загрузка класса фабрики из местоположения, указанного в ссылке, может поддерживаться пользовательской реализацией ObjectFactoryBuilder. Если задано местоположение класса фабрики, оно игнорируется. Если требуется другая политика, можно использовать пользовательский ObjectFactoryBuilder. Если при создании фабрики возникает исключение, оно передаётся вызывающему коду.
  2. Если refInfo — это Reference или Referenceable без имени класса фабрики, а адрес или адреса являются StringRefAddr с типом адреса "URL", попробуйте создать объект с помощью фабрики контекста URL, соответствующей идентификатору схемы каждого URL (см. getURLContext()). Если попытка не удалась, перейдите к следующему шагу.
  3. Используйте фабрики объектов, указанные в свойстве Context.OBJECT_FACTORIES среды и в файле ресурсов поставщика, связанном с nameCtx, в этом порядке. Значение этого свойства — список имён классов фабрик, разделённых двоеточиями; они проверяются по порядку, и используется первая фабрика, которой удаётся создать объект. Если загрузить ни одну из фабрик не удалось, возвратите refInfo. Если при создании объекта возникает исключение, оно передаётся вызывающему коду.

Поставщикам служб, реализующим интерфейс DirContext, следует использовать DirectoryManager.getObjectInstance(), а не этот метод. Поставщикам служб, реализующим только интерфейс Context, следует использовать этот метод.

Обратите внимание, что фабрика объектов (объект, реализующий интерфейс ObjectFactory) должна быть общедоступной и иметь общедоступный конструктор без аргументов. Если фабрика находится в именованном модуле, она должна находиться в пакете, экспортируемом этим модулем в модуль java.naming.

Параметры name и nameCtx можно использовать для указания имени создаваемого объекта. name — это имя объекта относительно контекста nameCtx. Эта информация может быть полезна фабрике объектов или реализации объекта. Если существует несколько контекстов, в которых можно задать имя объекта (что часто бывает), вызывающий код должен выбрать один из них. Как правило, следует выбирать самый «глубокий» из доступных контекстов. Если nameCtx равен null, name отсчитывается относительно контекста начальной настройки по умолчанию. Если имя не указывается, параметр name должен быть равен null.

Параметры:
refInfo — возможно, null-объект, для которого нужно создать объект.
name — имя этого объекта относительно nameCtx. Указывать имя необязательно; если оно не указано, name должно быть равно null.
nameCtx — контекст, относительно которого задан параметр name. Если значение равно null, name отсчитывается относительно контекста начальной настройки по умолчанию.
environment — возможно, null-среда, используемая при создании фабрики объектов и объекта.
Возвращает:
Объект, созданный с использованием refInfo; или refInfo, если объект невозможно создать с помощью описанного выше алгоритма.
Выбрасывает:
NamingException — если при попытке получить контекст URL возникло исключение именования или одна из используемых фабрик выбросила NamingException.
Exception — если одна из используемых фабрик выбросила исключение либо при загрузке и создании экземпляра фабрики и классов объектов произошла ошибка. Фабрика должна выбрасывать исключение только в том случае, если не хочет, чтобы для создания объекта использовались другие фабрики. См. ObjectFactory.getObjectInstance().
См. также:
  • getURLContext(String, Hashtable)
  • ObjectFactory
  • ObjectFactory.getObjectInstance(Object, Name, Context, Hashtable)

getURLContext

public static Context getURLContext(String scheme, Hashtable<?,?> environment) throws NamingException
Создаёт контекст для указанного идентификатора схемы URL.

Созданный контекст предназначен для разрешения URL схемы scheme. Он не привязан к конкретному URL и может обрабатывать произвольные URL с указанной схемой.

Имя класса фабрики, создающей контекст, формируется по соглашению идентификатор-схемыURLContextFactory (например, "ftpURLContextFactory" для идентификатора схемы "ftp") и располагается в пакете, указанном ниже. Свойство среды Context.URL_PKG_PREFIXES (которое может содержать значения из системных свойств или файлов ресурсов приложения) содержит список префиксов пакетов, разделённых двоеточиями. Для загрузки класса фабрики префиксы пакетов из этого свойства проверяются в указанном порядке. Префикс пакета по умолчанию — "com.sun.jndi.url" (если ни один из указанных пакетов не подходит, проверяется этот префикс). Полное имя пакета формируется объединением префикса пакета и идентификатора схемы.

Например, если идентификатор схемы — "ldap", а свойство Context.URL_PKG_PREFIXES содержит "com.widget:com.wiz.jndi", менеджер именования попытается загрузить следующие классы, пока один из них не будет успешно создан:

  • com.widget.ldap.ldapURLContextFactory
  • com.wiz.jndi.ldap.ldapURLContextFactory
  • com.sun.jndi.url.ldap.ldapURLContextFactory
Если ни один из префиксов пакетов не подходит, возвращается null.

Если экземпляр фабрики создан, для получения контекста ей передаются следующие параметры.

factory.getObjectInstance(null, environment);

Например, вызов getObjectInstance(), показанный выше, для фабрики контекста LDAP URL вернёт контекст, способный разрешать URL LDAP (например, "ldap://ldap.wiz.com/o=wiz,c=us", "ldap://ldap.umich.edu/o=umich,c=us", ...).

Обратите внимание, что фабрика объектов (объект, реализующий интерфейс ObjectFactory) должна быть общедоступной и иметь общедоступный конструктор без аргументов. Если фабрика находится в именованном модуле, она должна находиться в пакете, экспортируемом этим модулем в модуль java.naming.

Параметры:
scheme — отличный от null идентификатор схемы URL, поддерживаемых контекстом.
environment — возможно, null-свойства среды, используемые при создании фабрики объектов и контекста.
Возвращает:
Контекст для разрешения URL с идентификатором схемы scheme; null, если фабрика для создания контекста не найдена.
Выбрасывает:
NamingException — если при создании контекста возникает исключение именования.
См. также:
  • getObjectInstance(Object, Name, Context, Hashtable)
  • ObjectFactory.getObjectInstance(Object, Name, Context, Hashtable)

getInitialContext

public static Context getInitialContext(Hashtable<?,?> env) throws NamingException
Создаёт начальный контекст с использованием указанных свойств среды.

Это выполняется следующим образом:

  • Если установлен InitialContextFactoryBuilder, он используется для создания фабрики начального контекста
  • В противном случае используется класс, указанный в свойстве среды Context.INITIAL_CONTEXT_FACTORY
    • Сначала механизм ServiceLoader пытается найти поставщика InitialContextFactory, используя загрузчик классов контекста текущего потока
    • Если это не удаётся, данная реализация пытается найти подходящий InitialContextFactory с помощью встроенного механизма
      (Обратите внимание: фабрика начального контекста (объект, реализующий интерфейс InitialContextFactory) должна быть общедоступной и иметь общедоступный конструктор без аргументов. Если фабрика находится в именованном модуле, она должна находиться в пакете, экспортируемом этим модулем в модуль java.naming.)
Параметры:
env — возможно, null-свойства среды, используемые при создании контекста.
Возвращает:
Ненулевой начальный контекст.
Выбрасывает:
NoInitialContextException — если свойство Context.INITIAL_CONTEXT_FACTORY не найдено, содержит имя несуществующего класса или класса, экземпляр которого нельзя создать, либо если по другой причине не удалось создать начальный контекст.
NamingException — если возникло другое исключение именования.
См. также:
  • InitialContext
  • InitialDirContext

setInitialContextFactoryBuilder

public static void setInitialContextFactoryBuilder(InitialContextFactoryBuilder builder) throws NamingException
Устанавливает builder в качестве построителя InitialContextFactory.
Параметры:
builder — устанавливаемый построитель фабрики начального контекста. Если значение равно null, построитель не устанавливается.
Выбрасывает:
NamingException — построитель нельзя установить по причине, не связанной с безопасностью.
IllegalStateException — если построитель уже был установлен.
См. также:
  • hasInitialContextFactoryBuilder()

hasInitialContextFactoryBuilder

public static boolean hasInitialContextFactoryBuilder()
Определяет, установлен ли построитель фабрики начального контекста.
Возвращает:
true, если построитель фабрики начального контекста установлен; в противном случае false.
См. также:
  • setInitialContextFactoryBuilder(InitialContextFactoryBuilder)

getContinuationContext

public static Context getContinuationContext(CannotProceedException cpe) throws NamingException
Создаёт контекст, в котором можно продолжить операцию с контекстом.

При выполнении операции над именем, охватывающим несколько пространств имён, контекст одной системы именования может передать операцию следующей системе именования. Для этого реализация контекста сначала создаёт CannotProceedException, содержащий сведения о том, как далеко продвинулась операция. Затем она получает контекст продолжения от JNDI, вызывая getContinuationContext. После этого реализация контекста должна возобновить операцию, вызвав ту же операцию для контекста продолжения и передав оставшуюся неразрешённой часть имени.

Перед использованием параметра cpe этот метод обновляет среду, связанную с этим объектом, задавая свойству CPE значение cpe. Это свойство наследуется контекстом продолжения и может использоваться поставщиком службы этого контекста для проверки полей данного исключения.

Параметры:
cpe — ненулевое исключение, вызвавшее продолжение.
Возвращает:
Ненулевой объект Context для продолжения операции.
Выбрасывает:
NamingException — если возникло исключение именования.

getStateToBind

public static Object getStateToBind(Object obj, Name name, Context nameCtx, Hashtable<?,?> environment) throws NamingException
Получает состояние объекта для привязки.

Поставщикам служб, реализующим интерфейс DirContext, следует использовать DirectoryManager.getStateToBind(), а не этот метод. Поставщикам служб, реализующим только интерфейс Context, следует использовать этот метод.

Этот метод использует фабрики состояний, указанные в свойстве Context.STATE_FACTORIES в свойствах среды и в файле ресурсов поставщика, связанном с nameCtx, в этом порядке. Значение этого свойства — список имён классов фабрик, разделённых двоеточиями; они проверяются по порядку, и используется первая фабрика, которой удаётся вернуть состояние объекта. Если таким способом получить состояние объекта не удаётся, возвращается сам объект. Если при получении состояния возникает исключение, оно передаётся вызывающему коду.

Обратите внимание, что фабрика состояний (объект, реализующий интерфейс StateFactory) должна быть общедоступной и иметь общедоступный конструктор без аргументов. Если фабрика находится в именованном модуле, она должна находиться в пакете, экспортируемом этим модулем в модуль java.naming.

Параметры name и nameCtx можно использовать для указания имени создаваемого объекта. Подробности см. в описании раздела «Параметры Name и Context» в ObjectFactory.getObjectInstance().

Этот метод может вернуть объект Referenceable. Поставщик службы, получивший этот объект, может сохранить его напрямую или извлечь его ссылку (с помощью Referenceable.getReference()) и сохранить её.

Параметры:
obj — ненулевой объект, состояние которого нужно получить для привязки.
name — имя этого объекта относительно nameCtx или null, если имя не указано.
nameCtx — контекст, относительно которого задан параметр name, или null, если name отсчитывается относительно контекста начальной настройки по умолчанию.
environment — возможно, null-среда, используемая при создании фабрики состояний и состояния объекта.
Возвращает:
Ненулевой объект, представляющий состояние obj для привязки. Это может быть сам объект (obj).
Выбрасывает:
NamingException — если одна из используемых фабрик выбросила исключение либо при загрузке и создании экземпляра фабрики и классов объектов произошла ошибка. Фабрика должна выбрасывать исключение только в том случае, если не хочет, чтобы для создания объекта использовались другие фабрики. См. StateFactory.getStateToBind().
С версии:
1.3
См. также:
  • StateFactory
  • StateFactory.getStateToBind(Object, Name, Context, Hashtable)
  • DirectoryManager.getStateToBind(Object, Name, Context, Hashtable, Attributes)

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

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