public class InitialContext extends Object implements Context
ネーミング操作はすべて、コンテキストを基準にします。初期コンテキストには Context インタフェースが実装され、名前を解決する開始点が提供されます。
初期コンテキストが構築されると、コンストラクタに渡される環境パラメータ、および任意のアプリケーションリソースファイルで定義されたプロパティーによって環境が初期化されます。さらに、システムプロパティーまたはアプレットパラメータ (Context.APPLET
の使用による) として、少数の標準 JNDI プロパティーが指定されることもあります。これらの特別なプロパティーは、Context および LdapContext インタフェースドキュメントのフィールド詳細セクションにリスト表示されます。
JNDI では、次の 2 つのソースから値を順にマージして、各プロパティーの値が決定されます。
初期コンテキストの実装は、実行時に決定されます。デフォルトのポリシーでは、初期コンテキストファクトリのクラス名を含む、環境プロパティー java.naming.factory.initial
が使用されます。このポリシーに対する例外は、次に説明するように、URL 文字列を解決するときに作成されます。
名前パラメータとして URL 文字列 (scheme_id:rest_of_name 形式の String) がメソッドに渡されると、その方式を処理する URL コンテキストファクトリが検索され、URL の解決に使用されます。このようなファクトリが見つからない場合は、java.naming.factory.initial で指定された初期コンテキストが使用されます。同様に、最初のコンポーネントが URL 文字列の CompositeName オブジェクトが名前パラメータとしてメソッドに渡されると、URL コンテキストファクトリが検索され、最初の名前コンポーネントの解決に使用されます。URL コンテキストファクトリが検索される方法の詳細は、NamingManager.getURLContext()
を参照してください。
初期コンテキストおよび URL コンテキストファクトリを検索するデフォルトポリシーは、NamingManager.setInitialContextFactoryBuilder() を呼び出すことでオーバーライドされることがあります。
初期コンテキストをインスタンス化できない場合、NoInitialContextException がスローされます。この例外は、InitialContext の構築時だけに限らず、InitialContext との対話中にスローされる可能性があります。たとえば、初期コンテキストの実装では、実際のメソッドが呼び出される場合だけコンテキストを検索する場合もあります。アプリケーションは、初期コンテキストの有無が判別される時期に依存しません。
環境プロパティー java.naming.factory.initial が null 以外の場合、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)
指定した環境を使用して初期コンテキストを構築します。
|
修飾子と型 | メソッドと説明 |
---|---|
Object |
addToEnvironment(String propName, Object propVal)
このコンテキストの環境に、新しい環境プロパティーを追加します。
|
void |
bind(Name name, Object obj)
名前をオブジェクトにバインドします。
|
void |
bind(String name, Object obj)
名前をオブジェクトにバインドします。
|
void |
close()
このコンテキストを閉じます。
|
Name |
composeName(Name name, Name prefix)
このコンテキストを基準にした名前を持つこのコンテキストの名前を変換します。
|
String |
composeName(String name, String prefix)
このコンテキストを基準にした名前を持つこのコンテキストの名前を変換します。
|
Context |
createSubcontext(Name name)
新しいコンテキストを作成してバインドします。
|
Context |
createSubcontext(String name)
新しいコンテキストを作成してバインドします。
|
void |
destroySubcontext(Name name)
名前付きコンテキストを破棄し、名前空間から削除します。
|
void |
destroySubcontext(String name)
名前付きコンテキストを破棄し、名前空間から削除します。
|
static <T> T |
doLookup(Name name)
名前付きオブジェクトを取得する static メソッドです。
|
static <T> T |
doLookup(String name)
名前付きオブジェクトを取得する static メソッドです。
|
protected Context |
getDefaultInitCtx()
NamingManager.getInitialContext() を呼び出すことによって初期コンテキストを取得し、それを defaultInitCtx 内にキャッシュします。 |
Hashtable<?,?> |
getEnvironment()
このコンテキストで有効な環境を取得します。
|
String |
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)
バインドされたオブジェクトとともに、名前付きコンテキストでバインドされた名前を列挙します。
|
Object |
lookup(Name name)
名前付きオブジェクトを取得します。
|
Object |
lookup(String name)
名前付きオブジェクトを取得します。
|
Object |
lookupLink(Name name)
名前の終端の基本コンポーネントを除くリンクをともなう、名前付きオブジェクトを取得します。
|
Object |
lookupLink(String name)
名前の終端の基本コンポーネントを除くリンクをともなう、名前付きオブジェクトを取得します。
|
void |
rebind(Name name, Object obj)
名前をオブジェクトにバインドし、既存のバインディングを上書きします。
|
void |
rebind(String name, Object obj)
名前をオブジェクトにバインドし、既存のバインディングを上書きします。
|
Object |
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
- true は、初期コンテキストが初期化されないことを示す。false は、new InitialContext() を呼び出すのと同じNamingException
- ネーミング例外が発生した場合init(Hashtable)
public InitialContext() throws NamingException
NamingException
- ネーミング例外が発生した場合InitialContext(Hashtable)
public InitialContext(Hashtable<?,?> environment) throws NamingException
このコンストラクタは environment を変更したり、その参照を保存したりはしませんが、複製を保存する可能性があります。呼び出し元は、environment がコンストラクタに渡されたあと、そこに含まれている可変のキーや値を変更してはいけません。
environment
- 初期コンテキストを作成するために使用される環境。null は空の環境を示す。NamingException
- ネーミング例外が発生した場合protected void init(Hashtable<?,?> environment) throws NamingException
このメソッドでは environment が変更され、参照が保存されます。呼び出し側では変更されません。
environment
- 初期コンテキストを作成するために使用される環境。null は空の環境を示す。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
- コンテキストを取得する対象となる null 以外の名前。name
の URL コンテキストまたはキャッシュされた初期コンテキスト。結果は null ではない。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
- コンテキストを取得する対象となる null 以外の名前。name
の URL コンテキストまたはキャッシュされた初期コンテキスト。結果は null ではない。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
- バインドするオブジェクト。null の可能性があるNameAlreadyBoundException
- 名前がすでにバインドされている場合InvalidAttributesException
- オブジェクトによって一部の必須属性が指定されなかった場合NamingException
- ネーミング例外が発生した場合public void bind(Name name, Object obj) throws NamingException
Context
bind
、インタフェース: Context
name
- バインドする名前。空は不可obj
- バインドするオブジェクト。null の可能性がある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
- バインドするオブジェクト。null の可能性があるInvalidAttributesException
- オブジェクトによって一部の必須属性が指定されなかった場合NamingException
- ネーミング例外が発生した場合public void rebind(Name name, Object obj) throws NamingException
Context
オブジェクトが DirContext の場合、名前に関連付けられている既存の属性はすべて、そのオブジェクトの属性に置き換えられます。置換されない場合、名前に関連付けられている既存の属性は、変更されないままです。
rebind
、インタフェース: Context
name
- バインドする名前。空は不可obj
- バインドするオブジェクト。null の可能性がある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 がスローされます。
連合ネーミングシステムでは、1 つのネーミングシステムからのコンテキストが別のネーミングシステムの名前にバインドされます。そのあと、合成名を使用して外部コンテキストのオペレーションを検索および実行できます。ただし、外部コンテキストはバインドされたコンテキストの「サブコンテキスト」ではないため、この合成名を使用してコンテキストを破棄しようとすると、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
- 追加する環境プロパティーの名前。null は不可propVal
- 追加するプロパティーの値。null は不可NamingException
- ネーミング例外が発生した場合Context.getEnvironment()
, Context.removeFromEnvironment(String)
public Object removeFromEnvironment(String propName) throws NamingException
Context
removeFromEnvironment
、インタフェース: Context
propName
- 削除する環境プロパティーの名前。null は不可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 リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.