Spec-Zone.ru › OpenJDK 25

Класс 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

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

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 — ненулевой идентификатор схемы 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 можно использовать, чтобы указать имя создаваемого объекта. Подробные сведения см. в описании раздела «Параметры имени и контекста» в 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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.naming/javax/naming/spi/NamingManager.html

Spec-Zone.ru

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