Класс NamingManager

Прямые известные подклассы:
DirectoryManager
public class NamingManager
extends Object

Этот класс содержит методы для создания объектов контекста и объектов, на которые ссылается информация о расположении в службе именования или каталога.

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

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

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

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

С:
1.3

Поля

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

Билдер может быть установлен только если выполняющейся нити разрешено сделать это (методом security manager's 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" scheme-id), в пакете, указанном следующим образом. Свойство среды 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 - не 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.)
Параметры:
env - возможно null свойства среды, используемые при создании контекста.
Возвращает:
Не null начальный контекст.
Исключения:
NoInitialContextException - если свойство Context.INITIAL_CONTEXT_FACTORY не найдено или указывает на несуществующий класс или класс, который нельзя создать, или если начальный контекст не может быть создан по какой-либо другой причине.
NamingException - если возникло другое исключение именования.
См. также:
InitialContext, InitialDirContext

setInitialContextFactoryBuilder

public static void setInitialContextFactoryBuilder(InitialContextFactoryBuilder builder)
                                            throws NamingException

Устанавливает InitialContextFactory билдер на builder.

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

Параметры:
builder - Исходный создатель фабрики контекста для установки. Если null, создатель не устанавливается.
Выбрасывает:
SecurityException - создатель не может быть установлен по соображениям безопасности.
NamingException - создатель не может быть установлен по причине, не связанной с безопасностью.
IllegalStateException - Если ранее был установлен создатель.
См. также:
hasInitialContextFactoryBuilder(), SecurityManager.checkSetFactory()

hasInitialContextFactoryBuilder

public static boolean hasInitialContextFactoryBuilder()

Определяет, установлен ли создатель фабрики начального контекста.

Возвращает:
true, если создатель фабрики начального контекста установлен; false в противном случае.
См. также:
setInitialContextFactoryBuilder(javax.naming.spi.InitialContextFactoryBuilder)

getContinuationContext

public static Context getContinuationContext(CannotProceedException cpe)
                                      throws NamingException

Создаёт контекст для продолжения операции контекста.

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

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

Параметры:
cpe - Несуществующее исключение, которое инициировало это продолжение.
Возвращает:
Объект Context, не равный null, для продолжения операции.
Выбрасывает:
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(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, 2020, 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/11/docs/api/java.naming/javax/naming/spi/NamingManager.html

Spec-Zone .ru
спецификации, руководства, описания, API