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が空の場合は、このコンテキストの新しいインスタンスを返します(これは、このコンテキストと同じネーミング・コンテキストを表しますが、その環境を個別に変更したり、同時にアクセスしたりできます)。
T
- 返されたオブジェクトの型name
- 検索するオブジェクトの名前NamingException
- ネーミング例外が発生した場合doLookup(String)
, lookup(Name)
public static <T> T doLookup(String name) throws NamingException
doLookup(Name)
を参照してください。T
- 返されたオブジェクトの型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, 2014, Oracle and/or its affiliates. All rights reserved.