|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
コンテキストに指定されたオブジェクトが変更されたときにトリガされるイベントの通知を受け取る、リスナーの登録/登録解除に関するメソッドを含みます。
あるサービスが既存のターゲットに対する配信登録のみをサポートする場合、存在しないターゲットを登録しようとすると、可能な限り早い時点で 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
ターゲットに指定されたコンテキストのサブツリーにあるオブジェクトに関するイベントを、通知するかどうかを指定する定数です。。 |
インタフェース javax.naming.Context から継承したフィールド |
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()
存在しないターゲットで、リスナーが配信処理を登録できるかどうか判定します。 |
インタフェース javax.naming.Context から継承したメソッド |
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 |
フィールドの詳細 |
public static final int OBJECT_SCOPE
この定数の値は 0 です。
public static final int ONELEVEL_SCOPE
この定数の値は 1 です。
public static final int SUBTREE_SCOPE
この定数の値は 2 です。
メソッドの詳細 |
public 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 のいずれか 1 つl
- null 以外のリスナー
NamingException
- リスナー追加時に問題が発生した場合removeNamingListener(javax.naming.event.NamingListener)
public void addNamingListener(String target, int scope, NamingListener l) throws NamingException
target
- このコンテキストに関連して解決される、オブジェクトの null 以外の文字列名scope
- OBJECT_SCOPE、ONELEVEL_SCOPE、または SUBTREE_SCOPE のいずれか 1 つl
- null 以外のリスナー
NamingException
- リスナー追加時に問題が発生した場合removeNamingListener(javax.naming.event.NamingListener)
public void removeNamingListener(NamingListener l) throws NamingException
l
- null 以外のリスナー
NamingException
- リスナーを削除したときに問題が発生した場合addNamingListener(javax.naming.Name, int, javax.naming.event.NamingListener)
public boolean targetMustExist() throws NamingException
NamingException
- このコンテキスト動作が判定できない場合
|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.