Класс InitialContext

Все реализованные интерфейсы:
Context
Прямые известные подклассы:
InitialDirContext
public class InitialContext
extends Object
implements Context

Этот класс является начальным контекстом для выполнения операций именования.

Все операции именования относятся к контексту. Начальный контекст реализует интерфейс Context и предоставляет отправную точку для разрешения имен.

При создании начального контекста его окружение инициализируется свойствами, определенными в параметре среды, переданном в конструктор, и во всех файлах ресурсов приложения.

JNDI определяет значение каждого свойства путем слияния значений из следующих двух источников в указанном порядке:

  1. Первое вхождение свойства из параметра среды конструктора и системных свойств.
  2. Файлы ресурсов приложения (jndi.properties).
Для каждого свойства, найденного в обоих этих двух источниках или в более чем одном файле ресурсов приложения, значение свойства определяется следующим образом. Если свойство является одним из стандартных свойств JNDI, которые указывают список фабрик JNDI (см. Context), все значения объединяются в один список, разделенный двоеточиями. Для других свойств используется только первое найденное значение.

Реализация начального контекста определяется во время выполнения. Политика по умолчанию использует свойство среды "java.naming.factory.initial", которое содержит имя класса фабрики начального контекста. Исключение из этой политики применяется при разрешении строковых значений URL, как описано ниже.

Когда строковое значение URL (a String вида scheme_id:rest_of_name) передается в качестве параметра имени в любой метод, ищется фабрика контекста URL для обработки этой схемы и используется для разрешения URL. Если такая фабрика не найдена, используется начальный контекст, указанный "java.naming.factory.initial". Аналогично, когда объект CompositeName, первой частью которого является строка URL, передается в качестве параметра имени в любой метод, ищется фабрика контекста URL и используется для разрешения первой составляющей имени. См. NamingManager.getURLContext() для описания того, как ищутся фабрики контекста URL.

Данную политику по умолчанию поиска фабрик начального контекста и контекста URL можно переопределить, вызвав NamingManager.setInitialContextFactoryBuilder().

Исключение NoInitialContextException выбрасывается, когда начальный контекст не может быть создан. Это исключение может быть сгенерировано во время любого взаимодействия с InitialContext, а не только при создании InitialContext. Например, реализация начального контекста может лениво извлекать контекст только при вызове фактических методов. Приложение не должно зависеть от того, когда определяется существование начального контекста.

Когда свойство среды "java.naming.factory.initial" не равно null, конструктор InitialContext попытается создать начальный контекст, указанный в нём. В этот момент фабрика начального контекста может выбросить исключение, если возникнет проблема. Однако, когда она проверяет и сообщает пользователям начального контекста о проблемах, связанных со свойствами среды или подключением, зависит от реализации поставщика. Она может делать это лениво — откладывая до выполнения операции с контекстом, или сразу при создании контекста.

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

C:
1.3, JNDI 1.1
См. также:
Context, NamingManager.setInitialContextFactoryBuilder

Поля

Модификатор и тип Поле Описание
protected Context defaultInitCtx

Поле, содержащее результат вызова NamingManager.getInitialContext().

protected boolean gotDefault

Поле, указывающее, был ли получен начальный контекст вызовом NamingManager.getInitialContext().

protected Hashtable<Object,​Object> myProps

Окружение, связанное с этим InitialContext.

Поля, объявленные в интерфейсе javax.naming.Context

APPLET, AUTHORITATIVE, BATCHSIZE, DNS_URL, INITIAL_CONTEXT_FACTORY, LANGUAGE, OBJECT_FACTORIES, PROVIDER_URL, REFERRAL, SECURITY_AUTHENTICATION, SECURITY_CREDENTIALS, SECURITY_PRINCIPAL, SECURITY_PROTOCOL, STATE_FACTORIES, URL_PKG_PREFIXES

Краткое описание конструкторов

Модификатор Конструктор Описание
InitialContext()

Создает начальный контекст.

protected InitialContext​(boolean lazy)

Создает начальный контекст с возможностью не инициализировать его.

InitialContext​(Hashtable<?,​?> environment)

Создаёт начальный контекст с использованием предоставленной среды.

Краткое описание методов

Модификатор и тип Метод Описание
String composeName​(String name, String prefix)

Компонует имя этого контекста с именем, относительным к этому контексту.

Name composeName​(Name name, Name prefix)

Компонует имя этого контекста с именем, относительным к этому контексту.

static <T> T doLookup​(String name)

Статический метод для получения именованного объекта.

static <T> T doLookup​(Name name)

Статический метод для получения именованного объекта.

protected Context getDefaultInitCtx()

Получает начальный контекст, вызывая NamingManager.getInitialContext() и кеширует его в defaultInitCtx.

protected Context getURLOrDefaultInitCtx​(String name)

Получает контекст для разрешения строкового имени name.

protected Context getURLOrDefaultInitCtx​(Name name)

Получает контекст для разрешения name.

protected void init​(Hashtable<?,​?> environment)

Инициализирует начальный контекст с использованием предоставленной среды.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Методы, объявленные в интерфейсе javax.naming.Context

addToEnvironment, bind, bind, close, createSubcontext, createSubcontext, destroySubcontext, destroySubcontext, getEnvironment, getNameInNamespace, getNameParser, getNameParser, list, list, listBindings, listBindings, lookup, lookup, lookupLink, lookupLink, rebind, rebind, removeFromEnvironment, rename, rename, unbind, unbind

Поля

myProps

protected Hashtable<Object,Object> myProps

Окружение, связанное с этим InitialContext. Инициализируется значением null и обновляется конструктором, принимающим окружение, или методом init().

См. также:
Context.addToEnvironment(java.lang.String, java.lang.Object), Context.removeFromEnvironment(java.lang.String), Context.getEnvironment()

defaultInitCtx

protected Context defaultInitCtx

Поле, содержащее результат вызова NamingManager.getInitialContext(). Устанавливается методом getDefaultInitCtx() при первом его вызове. Последующие вызовы getDefaultInitCtx() возвращают значение defaultInitCtx.

См. также:
getDefaultInitCtx()

gotDefault

protected boolean gotDefault

Поле, указывающее, получен ли начальный контекст путём вызова NamingManager.getInitialContext(). Если true, результат находится в defaultInitCtx.

Конструкторы

InitialContext

protected InitialContext(boolean lazy)
                  throws NamingException

Создаёт начальный контекст с опцией неинициализации. Это может использоваться конструктором в подклассе, когда значение параметра окружения ещё неизвестно в момент вызова конструктора InitialContext. Конструктор подкласса вызовет этот конструктор, вычислит значение окружения и затем вызовет init() перед возвратом.

Параметры:
lazy - true означает не инициализировать начальный контекст; false эквивалентно вызову new InitialContext()
Исключения:
NamingException - если возникает исключение именования
С:
1.3
См. также:
init(Hashtable)

InitialContext

public InitialContext()
               throws NamingException

Создаёт начальный контекст. Свойства окружения не предоставляются. Эквивалентно new InitialContext(null).

Исключения:
NamingException - если возникает исключение именования
См. также:
InitialContext(Hashtable)

InitialContext

public InitialContext(Hashtable<?,​?> environment)
               throws NamingException

Создаёт начальный контекст, используя предоставленное окружение. Свойства окружения обсуждаются в описании класса.

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

Параметры:
environment - окружение, используемое для создания начального контекста. Значение null указывает на пустое окружение.
Исключения:
NamingException - если возникает исключение именования

Методы

init

protected void init(Hashtable<?,​?> environment)
             throws NamingException

Инициализирует начальный контекст, используя предоставленное окружение. Свойства окружения обсуждаются в описании класса.

Этот метод будет изменять environment и сохранять ссылку на него. Звонящий больше не может его изменять.

Параметры:
environment - окружение, используемое для создания начального контекста. Значение null указывает на пустое окружение.
Исключения:
NamingException - если возникает исключение именования
С:
1.3
См. также:
InitialContext(boolean)

doLookup

public static <T> T doLookup(Name name)
                      throws NamingException

Статический метод для получения объекта с именем. Это метод-костыль, эквивалентный вызову:

InitialContext ic = new InitialContext(); Object obj = ic.lookup();

Если name пустое, возвращает новый экземпляр этого контекста (который представляет тот же контекст именования, что и этот контекст, но его окружение может быть изменено независимо, и к нему можно получить доступ одновременно).

Параметры типа:
T - тип возвращаемого объекта
Параметры:
name - имя объекта для поиска
Возвращает:
объект, связанный с name
Исключения:
NamingException - если возникает исключение именования
С:
1.6
См. также:
doLookup(String), Context.lookup(Name)

doLookup

public static <T> T doLookup(String name)
                      throws NamingException

Статический метод для получения объекта с именем. См. doLookup(Name) для подробностей.

Параметры типа:
T - тип возвращаемого объекта
Параметры:
name - имя объекта для поиска
Возвращает:
объект, связанный с name
Исключения:
NamingException - если возникает исключение именования
С:
1.6

getDefaultInitCtx

protected Context getDefaultInitCtx()
                             throws NamingException

Получает начальный контекст, вызывая NamingManager.getInitialContext() и кэширует его в defaultInitCtx. Устанавливает gotDefault для того, чтобы знать, что мы уже пробовали это ранее.

Возвращает:
Непустой кэшированный начальный контекст.
Исключения:
NoInitialContextException - Если начальный контекст не найден.
NamingException - Если возникло исключение именования.

getURLOrDefaultInitCtx

protected Context getURLOrDefaultInitCtx(String name)
                                  throws NamingException

Получает контекст для разрешения строкового имени name. Если имя name является строкой URL, то пытается найти контекст URL для него. Если он не найден или name не является строкой URL, то возвращает getDefaultInitCtx().

См. getURLOrDefaultInitCtx(Name) для описания того, как подкласс должен использовать этот метод.

Параметры:
name - Непустое имя, для которого необходимо получить контекст.
Возвращает:
Контекст URL для name или кэшированный начальный контекст. Результат не может быть null.
Исключения:
NoInitialContextException - Если начальный контекст не найден.
NamingException - Если возникло исключение именования.
См. также:
NamingManager.getURLContext(java.lang.String, java.util.Hashtable<?, ?>)

getURLOrDefaultInitCtx

protected Context getURLOrDefaultInitCtx(Name name)
                                  throws NamingException

Получает контекст для разрешения name. Если первый компонент имени name является строкой URL, то пытается найти контекст URL для него. Если он не найден или первый компонент name не является строкой URL, то возвращает getDefaultInitCtx().

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

protected XXXContext getURLOrDefaultInitXXXCtx(Name name)
throws NamingException {
 Context answer = getURLOrDefaultInitCtx(name);
 if (!(answer instanceof XXXContext)) {
   if (answer == null) {
     throw new NoInitialContextException();
   } else {
     throw new NotContextException("Not an XXXContext");
   }
 }
 return (XXXContext)answer;
}
При предоставлении реализаций для новых методов в подклассе используйте этот недавно определённый метод для получения начального контекста.
public Object XXXMethod1(Name name, ...) {
 throws NamingException {
   return getURLOrDefaultInitXXXCtx(name).XXXMethod1(name, ...);
}
Параметры:
name - Непустое имя, для которого необходимо получить контекст.
Возвращает:
Контекст URL для name или кэшированный начальный контекст. Результат не может быть null.
Исключения:
NoInitialContextException - Если начальный контекст не найден.
NamingException - Если возникло исключение именования.
См. также:
NamingManager.getURLContext(java.lang.String, java.util.Hashtable<?, ?>)

composeName

public String composeName(String name,
                          String prefix)
                   throws NamingException

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

Определено в:
composeName в интерфейсе Context
Параметры:
name - имя, относящееся к этому контексту
prefix - имя этого контекста относительно одного из его предков
Возвращает:
составление prefix и name
Исключения:
NamingException - если возникает исключение именования

composeName

public Name composeName(Name name,
                        Name prefix)
                 throws NamingException

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

Определено в:
composeName в интерфейсе Context
Параметры:
name - имя, относящееся к этому контексту
prefix - имя этого контекста относительно одного из его предков
Возвращает:
составление prefix и name
Исключения:
NamingException - если возникает исключение именования
См. также:
Context.composeName(String, String)

© 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/InitialContext.html

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