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实例,而不是在命名空间对应的对象。如果计划在一些点移除侦听器,则需要保持一个参考的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)
添加一个侦听器,用于接收目标和范围更改标识的对象(S)时发射的命名事件。
|
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
-非空的听众。
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
如果对此不能下决定的行为。
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.