Spec-Zone.ru › OpenJDK 17

Класс 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)
Устанавливает создателя 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 - Возможный null-объект, для которого нужно создать объект.
name - Имя этого объекта относительно nameCtx. Указание имени необязательно; если оно опущено, name должно быть null.
nameCtx - Контекст относительно которого указан параметр name. Если null, name относится к контексту по умолчанию.
environment - Возможные null-свойства среды, которые будут использованы при создании фабрики объектов и объекта.
Возвращает:
Объект, созданный с помощью 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.

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

Параметры:
scheme - Не null идентификатор схемы URL, поддерживаемый контекстом.
environment - Возможно null-свойства среды, которые будут использованы при создании фабрики объектов и контекста.
Возвращает:
Контекст для разрешения 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.

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

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

hasInitialContextFactoryBuilder

public static boolean hasInitialContextFactoryBuilder()
Определяет, установлен ли InitialContextFactory builder.
Returns:
true, если билдер начального контекста установлен; 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, 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/spi/NamingManager.html

Spec-Zone.ru

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