Spec-Zone.ru › OpenJDK 24

Класс NamingManager

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

Этот класс не может быть инстанцирован. Он содержит только статические методы.

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

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

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

C момента:
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)
Устанавливает создатель InitialContextFactory в builder.
static void setObjectFactoryBuilder(ObjectFactoryBuilder builder)
ObjectFactoryBuilder определяет политику, используемую при попытке загрузить фабрики объектов.

Методы, объявленные в классе java.lang.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(javax.naming.CannotProceedException)
  • Значения константных полей

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

setObjectFactoryBuilder

public static void setObjectFactoryBuilder(ObjectFactoryBuilder builder) throws NamingException
ObjectFactoryBuilder определяет политику, используемую при попытке загрузить фабрики объектов. См. getObjectInstance() и класс ObjectFactory для описания политики по умолчанию. setObjectFactoryBuilder() переопределяет эту политику по умолчанию, установив ObjectFactoryBuilder. Последующие фабрики объектов будут загружаться и создаваться с использованием установленного билдера.
Параметры:
builder - Устанавливаемый билдер фабрики. Если null, то билдер не устанавливается.
Исключения:
NamingException - билдер не может быть установлен по причине, не связанной с безопасностью.
IllegalStateException - Если фабрика уже установлена.
См. также:
  • getObjectInstance(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable<?, ?>)
  • ObjectFactory
  • ObjectFactoryBuilder

getObjectInstance

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

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

  1. Если refInfo является Reference или Referenceable, содержащим имя класса фабрики, используйте указанную фабрику для создания объекта. Возвращает refInfo, если фабрика не может быть создана. Загрузка класса фабрики из места, указанного в ссылке, может поддерживаться пользовательской реализацией ObjectFactoryBuilder. Местоположение класса фабрики (factory class location), если присутствует, игнорируется. Пользовательский 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 - Возможно нулевой объект, для которого нужно создать объект.
name - Имя этого объекта относительно nameCtx. Указание имени необязательно; если оно опущено, name должно быть null.
nameCtx - Контекст, относительно которого указан параметр name. Если null, name относится к контексту по умолчанию.
environment - Возможно нулевая среда, которая будет использоваться при создании фабрики объектов и объекта.
Возвращает:
Объект, созданный с использованием refInfo; или refInfo, если объект не может быть создан с использованием описанного выше алгоритма.
Исключения:
NamingException - если при попытке получить контекст URL возникло исключение именования или если одна из фабрик выбросила NamingException.
Exception - если одна из фабрик выбросила исключение или произошла ошибка при загрузке и создании классов фабрики и объекта. Фабрика должна выбрасывать исключение только в том случае, если она не хочет, чтобы другие фабрики использовались в попытке создать объект. См. ObjectFactory.getObjectInstance().
См. также:
  • getURLContext(java.lang.String, java.util.Hashtable<?, ?>)
  • ObjectFactory
  • ObjectFactory.getObjectInstance(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable<?, ?>)

getURLContext

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

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

Имя класса фабрики, создающей результирующий контекст, имеет соглашение об именовании scheme-idURLContextFactory (например, "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-адреса вернёт контекст, который может разрешать LDAP URL-адреса (например, "ldap://ldap.wiz.com/o=wiz,c=us", "ldap://ldap.umich.edu/o=umich,c=us", ...).

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

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

getInitialContext

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

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

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

setInitialContextFactoryBuilder

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

hasInitialContextFactoryBuilder

public static boolean hasInitialContextFactoryBuilder()
Определяет, установлен ли InitialContextFactory builder.
Возвращает:
true, если InitialContextFactory builder установлен; false в противном случае.
См. также:
  • setInitialContextFactoryBuilder(javax.naming.spi.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 - Возможно нулевая среда, используемая при создании фабрики состояния и состояния объекта.
Возвращает:
Не нулевой объект, представляющий состояние obj для связывания. Это может быть сам объект (obj).
Исключения:
NamingException - Если один из фабрик вызвал исключение, или если произошла ошибка при загрузке и создании классов фабрики и объекта. Фабрика должна вызывать исключение только в том случае, если она не хочет, чтобы другие фабрики использовались в попытке создать объект. См. StateFactory.getStateToBind().
С тех пор как:
1.3
См. также:
  • StateFactory
  • StateFactory.getStateToBind(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable<?, ?>)
  • DirectoryManager.getStateToBind(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable<?, ?>, javax.naming.directory.Attributes)

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

Spec-Zone.ru

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