Spec-Zone .ru
спецификации, руководства, описания, API
|
public class InitialContext extends Object implements Context
Все операции именования относительно контекста. Начальный контекст реализует интерфейс Контекста и обеспечивает начальную точку для разрешения имен.
Когда начальный контекст создается, его среда инициализируется со свойствами, определенными в параметре среды, который передают конструктору, и в любых файлах ресурсов приложения. Кроме того, небольшое количество стандартных свойств JNDI может быть определено как системные свойства или как параметры апплета (с помощью Context.APPLET
). Эти специальные свойства перечисляются в полевых разделах детали Context и документации интерфейса LdapContext.
JNDI определяет значение каждого свойства, объединяя значения из следующих двух источников в порядке:
Во время выполнения определяется начальная реализация контекста. Политика по умолчанию использует свойство среды"java.naming.factory.initial
", который содержит имя класса начальной фабрики контекста. Исключение к этой политике делается, разрешая строки URL, как описано ниже.
Когда строку URL (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" будет ненулем, конструктор InitialContext попытается создать начальный контекст, определенный там. Тогда, начальная включенная фабрика контекста могла бы выдать исключение, если с проблемой встречаются. Однако, это - провайдер, зависящий от реализации, когда это проверяет и указывает пользователям начального контекста на любое свойство среды - или соединение - связанные проблемы. Это может сделать так лениво - задерживающийся, пока работа не выполняется на контексте, или нетерпеливо, в то время, когда контекст создается.
Экземпляр InitialContext не синхронизируется против параллельного доступа многократными потоками. Многократные потоки каждое управление различным экземпляром InitialContext не должны синхронизироваться. Потоки, которые должны получить доступ к единственному экземпляру InitialContext одновременно, должны синхронизироваться среди себя и обеспечить необходимую блокировку.
Context
, NamingManager.setInitialContextFactoryBuilder
Модификатор и Тип | Поле и Описание |
---|---|
protected Context |
defaultInitCtx
Поле, содержащее результат вызова NamingManager.getInitialContext ().
|
protected boolean |
gotDefault
Поле, указывающее, был ли начальный контекст получен, вызывая NamingManager.getInitialContext ().
|
protected Hashtable<Object,Object> |
myProps
Среда связалась с этим InitialContext.
|
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)
Создает начальный контекст, используя предоставленную среду.
|
Модификатор и Тип | Метод и Описание |
---|---|
Объект |
addToEnvironment(String propName, Object propVal)
Добавляет новое свойство среды к среде этого контекста.
|
void |
bind(Name name, Object obj)
Связывает имя к объекту.
|
void |
bind(String name, Object obj)
Связывает имя к объекту.
|
void |
close()
Завершения этот контекст.
|
Имя |
composeName(Name name, Name prefix)
Составляет имя этого контекста с именем относительно этого контекста.
|
Строка |
composeName(String name, String prefix)
Составляет имя этого контекста с именем относительно этого контекста.
|
Контекст |
createSubcontext(Name name)
Создает и ограничивает новый контекст.
|
Контекст |
createSubcontext(String name)
Создает и ограничивает новый контекст.
|
void |
destroySubcontext(Name name)
Уничтожает именованный контекст и удаляет это из пространства имен.
|
void |
destroySubcontext(String name)
Уничтожает именованный контекст и удаляет это из пространства имен.
|
static <T> T |
doLookup(Name name)
Статический метод, чтобы получить именованный объект.
|
static <T> T |
doLookup(String name)
Статический метод, чтобы получить именованный объект.
|
protected Context |
getDefaultInitCtx()
Получает начальный контекст, вызывая
NamingManager.getInitialContext() и кэш это в defaultInitCtx. |
Hashtable<?,?> |
getEnvironment()
Получает среду в действительности для этого контекста.
|
Строка |
getNameInNamespace()
Получает полное имя этого контекста в пределах его собственного пространства имен.
|
NameParser |
getNameParser(Name name)
Получает синтаксический анализатор, связанный с именованным контекстом.
|
NameParser |
getNameParser(String name)
Получает синтаксический анализатор, связанный с именованным контекстом.
|
protected Context |
getURLOrDefaultInitCtx(Name name)
Получает контекст для того, чтобы решить
name . |
protected Context |
getURLOrDefaultInitCtx(String name)
Получает контекст для того, чтобы разрешить имя строки
name . |
protected void |
init(Hashtable<?,?> environment)
Инициализирует начальный контекст, используя предоставленную среду.
|
NamingEnumeration<NameClassPair> |
list(Name name)
Перечисляет имена, связанные в именованном контексте, наряду с именами классов объектов, связанных с ними.
|
NamingEnumeration<NameClassPair> |
list(String name)
Перечисляет имена, связанные в именованном контексте, наряду с именами классов объектов, связанных с ними.
|
NamingEnumeration<Binding> |
listBindings(Name name)
Перечисляет имена, связанные в именованном контексте, наряду с объектами, связанными с ними.
|
NamingEnumeration<Binding> |
listBindings(String name)
Перечисляет имена, связанные в именованном контексте, наряду с объектами, связанными с ними.
|
Объект |
lookup(Name name)
Получает именованный объект.
|
Объект |
lookup(String name)
Получает именованный объект.
|
Объект |
lookupLink(Name name)
Получает именованный объект, ссылки за исключением терминального атомарного компонента имени.
|
Объект |
lookupLink(String name)
Получает именованный объект, ссылки за исключением терминального атомарного компонента имени.
|
void |
rebind(Name name, Object obj)
Связывает имя к объекту, перезаписывая любую существующую привязку.
|
void |
rebind(String name, Object obj)
Связывает имя к объекту, перезаписывая любую существующую привязку.
|
Объект |
removeFromEnvironment(String propName)
Удаляет свойство среды из среды этого контекста.
|
void |
rename(Name oldName, Name newName)
Связывает новое имя к объекту, связанному со старым названием, и развязывает старое название.
|
void |
rename(String oldName, String newName)
Связывает новое имя к объекту, связанному со старым названием, и развязывает старое название.
|
void |
unbind(Name name)
Развязывает именованный объект.
|
void |
unbind(String name)
Развязывает именованный объект.
|
protected Hashtable<Object,Object> myProps
protected Context defaultInitCtx
getDefaultInitCtx()
protected boolean gotDefault
defaultInitCtx
.protected InitialContext(boolean lazy) throws NamingException
lazy
- истинные средства не инициализируют начальный контекст; ложь эквивалентна вызову new InitialContext()NamingException
- если с исключением именования встречаютсяinit(Hashtable)
public InitialContext() throws NamingException
NamingException
- если с исключением именования встречаютсяInitialContext(Hashtable)
public InitialContext(Hashtable<?,?> environment) throws NamingException
Этот конструктор не будет изменять environment или сохранять ссылку на него, но может спасти клона. Вызывающая сторона не должна изменить изменчивые ключи и значения в environment после того, как это передали конструктору.
environment
- среда, используемая, чтобы создать начальный контекст. Нуль указывает на пустую среду.NamingException
- если с исключением именования встречаютсяprotected void init(Hashtable<?,?> environment) throws NamingException
Этот метод изменит environment и сохранит ссылку на него. Вызывающая сторона больше, возможно, не изменяет это.
environment
- среда, используемая, чтобы создать начальный контекст. Нуль указывает на пустую среду.NamingException
- если с исключением именования встречаютсяInitialContext(boolean)
public static <T> T doLookup(Name name) throws NamingException
InitialContext ic = new InitialContext(); Object obj = ic.lookup();
Если name пуст, возвращает новый экземпляр этого контекста (который представляет тот же самый контекст именования как этот контекст, но его среда может быть изменена независимо, и к этому можно получить доступ одновременно).
name
- имя объекта искатьNamingException
- если с исключением именования встречаютсяdoLookup(String)
, lookup(Name)
public static <T> T doLookup(String name) throws NamingException
doLookup(Name)
для деталей.name
- имя объекта искатьNamingException
- если с исключением именования встречаютсяprotected Context getDefaultInitCtx() throws NamingException
NamingManager.getInitialContext()
и кэш это в defaultInitCtx. Набор gotDefault
так, чтобы мы знали, что попробовали это прежде.NoInitialContextException
- Если не может найти начальный контекст.NamingException
- Если с исключением именования встретились.protected Context getURLOrDefaultInitCtx(String name) throws NamingException
name
. Если name
имя является строкой URL, затем попытайтесь найти контекст URL для него. Если ни один не находится, или если name
не строка URL, затем возвратитесь getDefaultInitCtx()
. См. getURLOrDefaultInitCtx (Имя) для описания того, как подкласс должен использовать этот метод.
name
- Ненулевое имя, для которого можно получить контекст.name
или кэшируемый начальный контекст. Результатом не может быть нуль.NoInitialContextException
- Если не может найти начальный контекст.NamingException
- В именовании встречаются с исключением.NamingManager.getURLContext(java.lang.String, java.util.Hashtable<?, ?>)
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
- Ненулевое имя, для которого можно получить контекст.name
или кэшируемый начальный контекст. Результатом не может быть нуль.NoInitialContextException
- Если не может найти начальный контекст.NamingException
- В именовании встречаются с исключением.NamingManager.getURLContext(java.lang.String, java.util.Hashtable<?, ?>)
public Object lookup(String name) throws NamingException
Context
Context.lookup(Name)
для деталей.lookup
в интерфейсе Context
name
- имя объекта искатьNamingException
- если с исключением именования встречаютсяpublic Object lookup(Name name) throws NamingException
Context
lookup
в интерфейсе Context
name
- имя объекта искатьNamingException
- если с исключением именования встречаютсяContext.lookup(String)
, Context.lookupLink(Name)
public void bind(String name, Object obj) throws NamingException
Context
Context.bind(Name, Object)
для деталей.bind
в интерфейсе Context
name
- имя, чтобы связать; возможно, не пустоobj
- объект связать; возможно нульNameAlreadyBoundException
- если имя уже связываетсяInvalidAttributesException
- если объект не предоставлял все обязательные атрибутыNamingException
- если с исключением именования встречаютсяpublic void bind(Name name, Object obj) throws NamingException
Context
bind
в интерфейсе Context
name
- имя, чтобы связать; возможно, не пустоobj
- объект связать; возможно нульNameAlreadyBoundException
- если имя уже связываетсяInvalidAttributesException
- если объект не предоставлял все обязательные атрибутыNamingException
- если с исключением именования встречаютсяContext.bind(String, Object)
, Context.rebind(Name, Object)
, DirContext.bind(Name, Object, javax.naming.directory.Attributes)
public void rebind(String name, Object obj) throws NamingException
Context
Context.rebind(Name, Object)
для деталей.rebind
в интерфейсе Context
name
- имя, чтобы связать; возможно, не пустоobj
- объект связать; возможно нульInvalidAttributesException
- если объект не предоставлял все обязательные атрибутыNamingException
- если с исключением именования встречаютсяpublic void rebind(Name name, Object obj) throws NamingException
Context
Если объектом является DirContext, любые существующие атрибуты, связанные с именем, заменяются таковыми из объекта. Иначе, любые существующие атрибуты, связанные с именем, остаются неизменными.
rebind
в интерфейсе Context
name
- имя, чтобы связать; возможно, не пустоobj
- объект связать; возможно нульInvalidAttributesException
- если объект не предоставлял все обязательные атрибутыNamingException
- если с исключением именования встречаютсяContext.rebind(String, Object)
, Context.bind(Name, Object)
, DirContext.rebind(Name, Object, javax.naming.directory.Attributes)
, DirContext
public void unbind(String name) throws NamingException
Context
Context.unbind(Name)
для деталей.unbind
в интерфейсе Context
name
- имя, чтобы развязать; возможно, не пустоNameNotFoundException
- если промежуточный контекст не существуетNamingException
- если с исключением именования встречаютсяpublic void unbind(Name name) throws NamingException
Context
name
от целевого контекста - названное всеми кроме терминальной атомарной части name
. Этот метод является идемпотентом. Это успешно выполняется, даже если терминальное атомарное имя не связывается в целевом контексте, но бросает NameNotFoundException, если какой-либо из промежуточных контекстов не существует.
Удаляются любые атрибуты, связанные с именем. Промежуточные контексты не изменяются.
unbind
в интерфейсе Context
name
- имя, чтобы развязать; возможно, не пустоNameNotFoundException
- если промежуточный контекст не существуетNamingException
- если с исключением именования встречаютсяContext.unbind(String)
public void rename(String oldName, String newName) throws NamingException
Context
Context.rename(Name, Name)
для деталей.rename
в интерфейсе Context
oldName
- имя существующей привязки; возможно, не пустоnewName
- имя новой привязки; возможно, не пустоNameAlreadyBoundException
- если newName уже связываетсяNamingException
- если с исключением именования встречаютсяpublic void rename(Name oldName, Name newName) throws NamingException
Context
rename
в интерфейсе Context
oldName
- имя существующей привязки; возможно, не пустоnewName
- имя новой привязки; возможно, не пустоNameAlreadyBoundException
- если newName уже связываетсяNamingException
- если с исключением именования встречаютсяContext.rename(String, String)
, Context.bind(Name, Object)
, Context.rebind(Name, Object)
public NamingEnumeration<NameClassPair> list(String name) throws NamingException
Context
Context.list(Name)
для деталей.list
в интерфейсе Context
name
- имя контекста, чтобы перечислитьNamingException
- если с исключением именования встречаютсяpublic NamingEnumeration<NameClassPair> list(Name name) throws NamingException
Context
Если привязка добавляется к или удаляется из этого контекста, его эффект на перечисление, ранее возвращенное, неопределен.
list
в интерфейсе Context
name
- имя контекста, чтобы перечислитьNamingException
- если с исключением именования встречаютсяContext.list(String)
, Context.listBindings(Name)
, NameClassPair
public NamingEnumeration<Binding> listBindings(String name) throws NamingException
Context
Context.listBindings(Name)
для деталей.listBindings
в интерфейсе Context
name
- имя контекста, чтобы перечислитьNamingException
- если с исключением именования встречаютсяpublic NamingEnumeration<Binding> listBindings(Name name) throws NamingException
Context
Если привязка добавляется к или удаляется из этого контекста, его эффект на перечисление, ранее возвращенное, неопределен.
listBindings
в интерфейсе Context
name
- имя контекста, чтобы перечислитьNamingException
- если с исключением именования встречаютсяContext.listBindings(String)
, Context.list(Name)
, Binding
public void destroySubcontext(String name) throws NamingException
Context
Context.destroySubcontext(Name)
для деталей.destroySubcontext
в интерфейсе Context
name
- имя контекста, который будет уничтожен; возможно, не пустоNameNotFoundException
- если промежуточный контекст не существуетNotContextException
- если имя связывается, но не называет контекст, или не называет контекст соответствующего типаContextNotEmptyException
- если именованный контекст не пустNamingException
- если с исключением именования встречаютсяpublic void destroySubcontext(Name name) throws NamingException
Context
Этот метод является идемпотентом. Это успешно выполняется, даже если терминальное атомарное имя не связывается в целевом контексте, но бросает NameNotFoundException, если какой-либо из промежуточных контекстов не существует.
В объединенной в федерацию системе именования контекст от одной системы именования может быть ограничен к имени в другом. Можно впоследствии искать и выполнить операции на внешнем контексте, используя составное имя. Однако, попытка уничтожают контекст, используя это составное имя, перестанет работать с NotContextException, потому что внешний контекст не является "подконтекстом" контекста, в котором это связывается. Вместо этого используйте unbind(), чтобы удалить привязку внешнего контекста. Уничтожение внешнего контекста требует, чтобы destroySubcontext() был выполнен на контексте от "собственной" системы именования внешнего контекста.
destroySubcontext
в интерфейсе Context
name
- имя контекста, который будет уничтожен; возможно, не пустоNameNotFoundException
- если промежуточный контекст не существуетNotContextException
- если имя связывается, но не называет контекст, или не называет контекст соответствующего типаContextNotEmptyException
- если именованный контекст не пустNamingException
- если с исключением именования встречаютсяContext.destroySubcontext(String)
public Context createSubcontext(String name) throws NamingException
Context
Context.createSubcontext(Name)
для деталей.createSubcontext
в интерфейсе Context
name
- имя контекста, чтобы создать; возможно, не пустоNameAlreadyBoundException
- если имя уже связываетсяInvalidAttributesException
- если создание подконтекста требует спецификации обязательных атрибутовNamingException
- если с исключением именования встречаютсяpublic Context createSubcontext(Name name) throws NamingException
Context
createSubcontext
в интерфейсе Context
name
- имя контекста, чтобы создать; возможно, не пустоNameAlreadyBoundException
- если имя уже связываетсяInvalidAttributesException
- если создание подконтекста требует спецификации обязательных атрибутовNamingException
- если с исключением именования встречаютсяContext.createSubcontext(String)
, DirContext.createSubcontext(javax.naming.Name, javax.naming.directory.Attributes)
public Object lookupLink(String name) throws NamingException
Context
Context.lookupLink(Name)
для деталей.lookupLink
в интерфейсе Context
name
- имя объекта искатьNamingException
- если с исключением именования встречаютсяpublic Object lookupLink(Name name) throws NamingException
Context
lookupLink
в интерфейсе Context
name
- имя объекта искатьNamingException
- если с исключением именования встречаютсяContext.lookupLink(String)
public NameParser getNameParser(String name) throws NamingException
Context
Context.getNameParser(Name)
для деталей.getNameParser
в интерфейсе Context
name
- имя контекста, от которого можно получить синтаксический анализаторNamingException
- если с исключением именования встречаютсяpublic NameParser getNameParser(Name name) throws NamingException
Context
getNameParser
в интерфейсе Context
name
- имя контекста, от которого можно получить синтаксический анализаторNamingException
- если с исключением именования встречаютсяContext.getNameParser(String)
, CompoundName
public String composeName(String name, String prefix) throws NamingException
composeName
в интерфейсе Context
name
- имя относительно этого контекстаprefix
- имя этого контекстно-зависимого одному из его предковprefix
и name
NamingException
- если с исключением именования встречаютсяpublic Name composeName(Name name, Name prefix) throws NamingException
composeName
в интерфейсе Context
name
- имя относительно этого контекстаprefix
- имя этого контекстно-зависимого одному из его предковprefix
и name
NamingException
- если с исключением именования встречаютсяContext.composeName(String, String)
public Object addToEnvironment(String propName, Object propVal) throws NamingException
Context
addToEnvironment
в интерфейсе Context
propName
- имя свойства среды, чтобы добавить; возможно, не нульpropVal
- значение свойства, чтобы добавить; возможно, не нульNamingException
- если с исключением именования встречаютсяContext.getEnvironment()
, Context.removeFromEnvironment(String)
public Object removeFromEnvironment(String propName) throws NamingException
Context
removeFromEnvironment
в интерфейсе Context
propName
- имя свойства среды, чтобы удалить; возможно, не нульNamingException
- если с исключением именования встречаютсяContext.getEnvironment()
, Context.addToEnvironment(String, Object)
public Hashtable<?,?> getEnvironment() throws NamingException
Context
Вызывающая сторона не должна делать изменения в объекте возвращенными: их эффект на контекст неопределен. Среда этого контекста может быть изменена, используя addToEnvironment() и removeFromEnvironment().
getEnvironment
в интерфейсе Context
NamingException
- если с исключением именования встречаютсяContext.addToEnvironment(String, Object)
, Context.removeFromEnvironment(String)
public void close() throws NamingException
Context
Этот метод является идемпотентом: вызов этого на контексте, который был уже закрыт, не имеет никакого эффекта. Вызов любого другого метода на закрытом контексте не позволяется, и приводит к неопределенному поведению.
close
в интерфейсе Context
NamingException
- если с исключением именования встречаютсяpublic String getNameInNamespace() throws NamingException
Context
У многих служб именования есть понятие "полного имени" для объектов в их соответствующих пространствах имен. Например, у записи LDAP есть отличительное имя, и у записи DNS есть полностью определенное имя. Этот метод позволяет клиентскому приложению получать это имя. Строка, возвращенная этим методом, не является именем составного объекта JNDI и не должна быть передана непосредственно к методам контекста. В именовании систем, для которых понятие полного имени не имеет смысла, бросается OperationNotSupportedException.
getNameInNamespace
в интерфейсе Context
OperationNotSupportedException
- если у системы именования нет понятия полного имениNamingException
- если с исключением именования встречаются
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.