Класс 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 |
Создаёт контекст, в котором можно продолжить операцию с контекстом. |
static Context |
getInitialContext |
Создаёт исходный контекст с использованием указанных свойств окружения. |
static Object |
getObjectInstance |
Создаёт экземпляр объекта для указанного объекта и окружения. |
static Object |
getStateToBind |
Получает состояние объекта для привязки. |
static Context |
getURLContext |
Создаёт контекст для указанного идентификатора схемы URL. |
static boolean |
hasInitialContextFactoryBuilder() |
Определяет, задан ли построитель фабрики исходного контекста. |
static void |
setInitialContextFactoryBuilder |
Задаёт builder в качестве построителя InitialContextFactory. |
static void |
setObjectFactoryBuilder |
ObjectFactoryBuilder определяет политику, используемую при попытке загрузить фабрики объектов. |
Подробное описание полей
CPE
public static final String CPE
getContinuationContext() сохраняет значение параметра CannotProceedException. Это свойство наследуется контекстом продолжения и может использоваться поставщиком службы этого контекста для проверки полей исключения. Значение этой константы — "java.naming.spi.CannotProceedException".
- Начиная с:
- 1.3
- См. также:
Подробное описание методов
setObjectFactoryBuilder
public static void setObjectFactoryBuilder(ObjectFactoryBuilder builder) throws NamingException
- Параметры:
-
builder— устанавливаемый построитель фабрик. Если значение равно null, построитель не устанавливается. - Исключения:
-
NamingException— построитель не может быть установлен по причине, не связанной с безопасностью. -
IllegalStateException— если фабрика уже была установлена. - См. также:
getObjectInstance
public static Object getObjectInstance(Object refInfo, Name name, Context nameCtx, Hashtable<?,?> environment) throws Exception
Если установлен построитель фабрик объектов, он используется для создания фабрики, которая создаст объект. В противном случае объект создаётся по следующим правилам:
- Если
refInfo— этоReferenceилиReferenceable, содержащий имя класса фабрики, используйте указанную фабрику для создания объекта. ВернитеrefInfo, если фабрику создать не удалось. Загрузка класса фабрики из местоположения, указанного в ссылке, может поддерживаться пользовательской реализациейObjectFactoryBuilder. Если указан адрес расположения класса фабрики, он игнорируется. Если требуется другая политика, можно использовать пользовательскийObjectFactoryBuilder. Если при создании фабрики возникает исключение, оно передаётся вызывающему коду. - Если
refInfo— этоReferenceилиReferenceableбез имени класса фабрики, а адрес или адреса являютсяStringRefAddrами с типом адреса "URL", попробуйте создать объект с помощью фабрики контекстов URL, соответствующей идентификатору схемы каждого URL (см.getURLContext()). Если это не удастся, перейдите к следующему шагу. - Используйте фабрики объектов, указанные в свойстве
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
public static Context getURLContext(String scheme, Hashtable<?,?> environment) throws NamingException
Полученный контекст предназначен для разрешения 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
Если экземпляр фабрики создан, она вызывается со следующими параметрами для получения контекста.
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— если при создании контекста возникло исключение именования. - См. также:
getInitialContext
public static Context getInitialContext(Hashtable<?,?> env) throws NamingException
Это выполняется следующим образом:
- Если установлен InitialContextFactoryBuilder, он используется для создания фабрики, создающей исходный контекст
- В противном случае используется класс, указанный в свойстве окружения
Context.INITIAL_CONTEXT_FACTORY- Сначала механизм ServiceLoader пытается найти поставщика
InitialContextFactoryс помощью загрузчика классов контекста текущего потока - Если это не удаётся, данная реализация пытается найти подходящий
InitialContextFactoryс помощью встроенного механизма
(Обратите внимание, что фабрика исходного контекста (объект, реализующий интерфейс InitialContextFactory) должна быть открытой и иметь открытый конструктор без аргументов. Если фабрика находится в именованном модуле, она должна находиться в пакете, который этот модуль экспортирует для модуляjava.naming.)
- Сначала механизм ServiceLoader пытается найти поставщика
- Параметры:
-
env— возможно, null-свойства окружения, используемые при создании контекста. - Возвращает:
- Ненулевой исходный контекст.
- Исключения:
-
NoInitialContextException— если свойствоContext.INITIAL_CONTEXT_FACTORYне найдено, указывает на несуществующий класс или класс, экземпляр которого нельзя создать, либо если исходный контекст не удалось создать по другой причине. -
NamingException— если возникло другое исключение именования. - См. также:
setInitialContextFactoryBuilder
public static void setInitialContextFactoryBuilder(InitialContextFactoryBuilder builder) throws NamingException
- Параметры:
-
builder— устанавливаемый построитель фабрики исходного контекста. Если значение равно null, построитель не устанавливается. - Исключения:
-
NamingException— построитель не может быть установлен по причине, не связанной с безопасностью. -
IllegalStateException— если построитель уже был установлен. - См. также:
hasInitialContextFactoryBuilder
public static boolean hasInitialContextFactoryBuilder()
- Возвращает:
- true, если построитель фабрики исходного контекста задан; в противном случае false.
- См. также:
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
- См. также:
© 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