public interface EventContext extends Context
如果服务仅支持登记现有的目标,企图用于在NameNotFoundException一个不存在的目标结果寄存器被尽早抛出,优选地在时间addNamingListener()被调用,或者如果这是不可能的,收听者将接收异常通过NamingExceptionEvent 。
另外,对于仅支持现有目标注册的服务提供商,当侦听器注册的目标随后从命名空间中删除时,通过8849219772068 (包含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 实例 ,而不是与命名空间中的相应对象。 如果程序打算在某个时候删除一个监听器,那么它需要保留对它调用的EventContext实例的引用addNamingListener() (就像需要保留对监听器的引用以便稍后删除)一样。 它不能期望做一个lookup() ,并获得另一个EventContext的实例来执行注销。
Modifier and Type | Field and Description |
---|---|
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
Modifier and Type | Method and Description |
---|---|
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 时才需要命名上下文。 target可以命名为非上下文,如果scope是OBJECT_SCOPE或SUBTREE_SCOPE 。 对于非上下文使用SUBTREE_SCOPE可能是有用的,例如,如果呼叫者不能预先知道target是否是上下文,并且仅希望注册根据target的(可能是退化的子树)的兴趣 。
当侦听器被通知事件时,侦听器可以被执行在除执行addNamingListener()的线程之外的线程中被调用。 当多个线程同时访问同一个EventContext时,必须小心。 见package description关于线程问题的更多信息。
target
- 相对于此上下文解析的非空名称。
scope
-一个
OBJECT_SCOPE,ONELEVEL_SCOPE,或
SUBTREE_SCOPE。
l
- 非正常听众。
NamingException
- 如果在添加侦听器时遇到问题。
removeNamingListener(javax.naming.event.NamingListener)
void addNamingListener(String target, int scope, NamingListener l) throws NamingException
target
- 相对于此上下文解析的对象的非空字符串名称。
scope
-一个
OBJECT_SCOPE,ONELEVEL_SCOPE,或
SUBTREE_SCOPE。
l
- 非
l
听众。
NamingException
- 如果在添加侦听器时遇到问题。
removeNamingListener(javax.naming.event.NamingListener)
void removeNamingListener(NamingListener l) throws NamingException
l
- 非内容侦听器。
NamingException
- 如果在删除侦听器时遇到问题。
addNamingListener(javax.naming.Name, int, javax.naming.event.NamingListener)
boolean targetMustExist() throws NamingException
NamingException
- 如果上下文在这方面的行为无法确定。