|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
public interface EventContext
包含註冊/註銷偵聽器的一些方法,這些偵聽器在上下文中命名的物件發生更改時獲得觸發事件的通知。
如果服務僅支持註冊現有目標,則試圖註冊不存在的目標將導致第一時間拋出 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
該常數用來表示對涉及目標指定物件的子階層樹中物件的事件感興趣,包括目標指定的物件。 |
方法摘要 | |
---|---|
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 |
欄位詳細資訊 |
---|
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
- 如果無法確定上下文的這一行為。
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。