public interface EventContext extends Context
あるサービスが既存のターゲットに対する配信登録のみをサポートする場合、存在しないターゲットを登録しようとすると、可能な限り早い時点で NameNotFoundException がスローされます。スローされるタイミングは addNamingListener() を呼び出す時点が理想的ですが、それが可能ではない場合は、リスナーは NamingExceptionEvent 経由で例外を受け取ります。
また、既存のターゲットしか登録しないサービスプロバイダでは、リスナーが登録したターゲットが名前空間から削除されると、NamingExceptionEvent (NameNotFoundException を含む) からリスナーに通知されます。
アプリケーションでは targetMustExist() メソッドを使用して、存在しないターゲットの登録を EventContext がサポートしているかを確認することができます。
たとえば、リスナーが次の登録を行なったとします。
そのあとに「x/y」という名前のオブジェクトが削除された場合、対応する NamingEvent (evt) には次が含まれている必要があります。NamespaceChangeListener listener = ...; src.addNamingListener("x", SUBTREE_SCOPE, listener);
evt.getEventContext() == src evt.getOldBinding().getName().equals("x/y")
さらに、リスナーの登録/登録解除は EventContext インスタンスを使って行われ、名前空間の対応オブジェクトを用いません。プログラムの一部でリスナーを削除する場合、addNamingListener() を起動した EventContext インスタンスの参照を保存します (リスナーに対して参照を保存し、あとで削除するために必要になります)。登録解除を行うために、lookup() を実行し、EventContext の別のインスタンスを取得することはできません。
修飾子と型 | フィールドと説明 |
---|---|
static int |
OBJECT_SCOPE
ターゲットに指定されたオブジェクトに関するイベントを通知するかどうかを指定する定数です。
|
static int |
ONELEVEL_SCOPE
ターゲットに指定されたコンテキストのオブジェクトに関するイベントを通知するかどうかを指定する定数です。ターゲットに指定されたコンテキストは除きます。
|
static int |
SUBTREE_SCOPE
ターゲットに指定されたコンテキストのサブツリーにあるオブジェクトに関するイベントを、通知するかどうかを指定する定数です。ターゲットに指定されたオブジェクトも含みます。
|
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
修飾子と型 | メソッドと説明 |
---|---|
void |
addNamingListener(Name target, int scope, NamingListener l)
リスナーを追加して、ターゲットおよびスコープで特定オブジェクトの変更時にトリガーされた、名前付きイベントを受け取れるようにします。
|
void |
addNamingListener(String target, int scope, NamingListener l)
リスナーを追加して、文字列のターゲット名およびスコープで特定したオブジェクトの変更時に、トリガーされた名前付きイベントを受け取れるようにします。
|
void |
removeNamingListener(NamingListener l)
リスナーを削除して、この EventContext によってトリガーされたネーミングイベントを受信できないようにします。
|
boolean |
targetMustExist()
存在しないターゲットで、リスナーが配信処理を登録できるかどうか判定します。
|
addToEnvironment, bind, bind, close, composeName, composeName, createSubcontext, createSubcontext, destroySubcontext, destroySubcontext, getEnvironment, getNameInNamespace, getNameParser, getNameParser, list, list, listBindings, listBindings, lookup, lookup, lookupLink, lookupLink, rebind, rebind, removeFromEnvironment, rename, rename, unbind, unbind
static final int OBJECT_SCOPE
この定数の値は 0 です。
static final int ONELEVEL_SCOPE
この定数の値は 1 です。
static final int SUBTREE_SCOPE
この定数の値は 2 です。
void addNamingListener(Name target, int scope, NamingListener l) throws NamingException
target がコンテキストを指定する必要があるのは、scope が ONELEVEL_SCOPE である場合のみです。scope が OBJECT_SCOPE または SUBTREE_SCOPE のいずれかの場合、target は非コンテキストを指定することができます。たとえば、target がコンテキストかどうかが事前にわからない場合に、呼び出し側が target をルートとするサブツリー (存在しない場合もある) を登録するときは、SUBTREE_SCOPE を使用して非コンテキストを指定します。
リスナーがイベントの通知を受け取ると、addNamingListener() が実行されていないスレッドでリスナーが起動されます。複数のスレッドが同時に同じ EventContext にアクセスしている場合は注意が必要です。スレッドの問題の詳細は、「パッケージの説明」を参照してください。
target
- このコンテキストに関連して解釈される null 以外の名前。scope
- OBJECT_SCOPE、ONELEVEL_SCOPE、SUBTREE_SCOPE のいずれか。l
- null 以外のリスナー。NamingException
- リスナーの追加中に問題が検出された場合。removeNamingListener(javax.naming.event.NamingListener)
void addNamingListener(String target, int scope, NamingListener l) throws NamingException
target
- このコンテキストを基準にして解決されたオブジェクトの null 以外の文字列名。scope
- OBJECT_SCOPE、ONELEVEL_SCOPE、SUBTREE_SCOPE のいずれか。l
- null 以外のリスナー。NamingException
- リスナーの追加中に問題が検出された場合。removeNamingListener(javax.naming.event.NamingListener)
void removeNamingListener(NamingListener l) throws NamingException
l
- null 以外のリスナー。NamingException
- リスナーの削除中に問題が見つかった場合。addNamingListener(javax.naming.Name, int, javax.naming.event.NamingListener)
boolean targetMustExist() throws NamingException
NamingException
- このコンテキスト動作が判定できない場合。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.