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, 2014, Oracle and/or its affiliates. All rights reserved.