Spec-Zone.ru › OpenJDK 21

Класс NamingManager

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

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

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

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

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

Since:
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. Последующие фабрики объектов будут загружены и созданы с использованием установленного билдера.

Билдер может быть установлен только в том случае, если выполняющейся нити разрешено (методом checkSetFactory() менеджера безопасности) сделать это. После установки билдер не может быть заменен.

Параметры:
builder - Фабричный билдер для установки. Если null, билдер не устанавливается.
Исключения:
SecurityException - билдер не может быть установлен по причинам безопасности.
NamingException - билдер не может быть установлен по причине, не связанной с безопасностью.
IllegalStateException - Если фабрика уже установлена.
См. также:
  • getObjectInstance(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable<?, ?>)
  • ObjectFactory
  • ObjectFactoryBuilder
  • SecurityManager.checkSetFactory()

getObjectInstance

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

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

  1. Если refInfo является Reference или Referenceable, содержащим имя класса фабрики, используйте указанную фабрику для создания объекта. Верните refInfo если фабрика не может быть создана. В JDK 1.1, если класс фабрики должен быть загружен из местоположения, указанного в ссылке, должен быть установлен SecurityManager, иначе создание фабрики завершится ошибкой. Если при создании фабрики возникает исключение, оно передается вызывающему методу.
  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 относится к контексту по умолчанию.

Параметры:
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() как показано выше на фабрике контекста URL LDAP вернёт контекст, который может обрабатывать URL-адреса LDAP (например, "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.)
Parameters:
env - Возможные свойства среды, используемые при создании контекста.
Returns:
Не нулевой начальный контекст.
Throws:
NoInitialContextException - Если свойство Context.INITIAL_CONTEXT_FACTORY не найдено, или оно указывает на несуществующий класс, или на класс, который нельзя создать, или если начальный контекст не удалось создать по какой-либо другой причине.
NamingException - Если произошла другая ошибка именования.
See Also:
  • InitialContext
  • InitialDirContext

setInitialContextFactoryBuilder

public static void setInitialContextFactoryBuilder(InitialContextFactoryBuilder builder) throws NamingException
Устанавливает InitialContextFactory builder в builder.

Builder может быть установлен только в том случае, если выполняющаяся нить разрешена менеджером безопасности для этого. После установки builder не может быть заменён.

Parameters:
builder - InitialContextFactory builder для установки. Если null, builder не устанавливается.
Throws:
SecurityException - builder не может быть установлен по причинам безопасности.
NamingException - builder не может быть установлен по причинам, не связанным с безопасностью.
IllegalStateException - Если builder уже был установлен ранее.
See Also:
  • hasInitialContextFactoryBuilder()
  • SecurityManager.checkSetFactory()

hasInitialContextFactoryBuilder

public static boolean hasInitialContextFactoryBuilder()
Определяет, установлен ли initial context factory builder.
Returns:
true, если initial context factory builder установлен; false в противном случае.
See Also:
  • setInitialContextFactoryBuilder(javax.naming.spi.InitialContextFactoryBuilder)

getContinuationContext

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

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

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

Parameters:
cpe - Не нулевая ошибка, которая вызвала это продолжение.
Returns:
Не нулевой объект Context для продолжения операции.
Throws:
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()) и хранение этого вместо этого.

Parameters:
obj - Не нулевой объект, для которого необходимо получить состояние для привязки.
name - Имя этого объекта относительно nameCtx, или null, если имя не указано.
nameCtx - Контекст относительно которого указан параметр name, или null, если name относится к по умолчанию начальному контексту.
environment - Возможные свойства среды, используемые при создании фабрики состояния и состояния объекта.
Returns:
Не нулевой объект, представляющий состояние obj для привязки. Может быть самим объектом (obj).
Throws:
NamingException - Если один из доступных фабрик вызывает ошибку, или при возникновении ошибки при загрузке и создании классов фабрики и объекта. Фабрика должна вызывать ошибку только в том случае, если она не хочет, чтобы другие фабрики использовались в попытке создать объект. См. StateFactory.getStateToBind().
Since:
1.3
See Also:
  • 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, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.naming/javax/naming/spi/NamingManager.html

Spec-Zone.ru

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