uTools-Manuals/docs/java/javax/naming/event/package-summary.html

152 lines
7.5 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div class="header">
<h1 class="title" title="Package">Package javax.naming.event</h1>
<div class="docSummary">
<div class="block">
访问命名和目录服务时,提供对事件通知的支持。
</div>
</div>
<p>See: <a href="#package.description">描述</a></p>
</div><div class="contentContainer">
<ul class="blockList">
<li class="blockList">
<table border="0" cellpadding="3" cellspacing="0" class="typeSummary" summary="Interface Summary table, listing interfaces, and an explanation">
<caption>
<span>接口摘要</span>
<span class="tabEnd"> </span>
</caption>
<tbody>
<tr>
<th class="colFirst" scope="col">接口</th>
<th class="colLast" scope="col">描述</th>
</tr>
</tbody>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="../../../javax/naming/event/EventContext.html" title="interface in javax.naming.event">EventContext</a></td>
<td class="colLast">
<div class="block">
包含用于注册/注销侦听器的方法,以通知在上下文中命名的对象发生变化时触发的事件。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../javax/naming/event/EventDirContext.html" title="interface in javax.naming.event">EventDirContext</a></td>
<td class="colLast">
<div class="block">
包含用于注册侦听器的方法,以便在目录上下文中指定的对象更改时触发的事件被通知。
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../javax/naming/event/NamespaceChangeListener.html" title="interface in javax.naming.event">NamespaceChangeListener</a></td>
<td class="colLast">
<div class="block">
指定对名称空间更改感兴趣的侦听器必须实现的方法。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../javax/naming/event/NamingListener.html" title="interface in javax.naming.event">NamingListener</a></td>
<td class="colLast">
<div class="block">
该接口是处理
<tt>NamingEvent</tt>的侦听器接口的根。
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../javax/naming/event/ObjectChangeListener.html" title="interface in javax.naming.event">ObjectChangeListener</a></td>
<td class="colLast">
<div class="block">
指定一个
<tt>NamingEvent</tt>的与
<tt>OBJECT_CHANGED</tt>事件类型的侦听器必须实现的方法。
</div> </td>
</tr>
</tbody>
</table> </li>
<li class="blockList">
<table border="0" cellpadding="3" cellspacing="0" class="typeSummary" summary="Class Summary table, listing classes, and an explanation">
<caption>
<span>类摘要</span>
<span class="tabEnd"> </span>
</caption>
<tbody>
<tr>
<th class="colFirst" scope="col"></th>
<th class="colLast" scope="col">描述</th>
</tr>
</tbody>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="../../../javax/naming/event/NamingEvent.html" title="class in javax.naming.event">NamingEvent</a></td>
<td class="colLast">
<div class="block">
此类表示由命名/目录服务触发的事件。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../javax/naming/event/NamingExceptionEvent.html" title="class in javax.naming.event">NamingExceptionEvent</a></td>
<td class="colLast">
<div class="block">
此类表示烧制时用于收集信息通知的
<tt>NamingEvent</tt>小号听众的程序/进程抛出
<tt>NamingException</tt>的事件。
</div> </td>
</tr>
</tbody>
</table> </li>
</ul>
<a name="package.description">
<!-- --> </a>
<h2 title="Package javax.naming.event Description">Package javax.naming.event Description</h2>
<div class="block">
<span>访问命名和目录服务时,提供对事件通知的支持。</span>
<p> <span>该包定义了Java命名和目录接口<font size="-2"><sup>TM</sup></font> JNDI的事件通知操作。</span> <span>JNDI为以Java编程语言编写的应用程序提供命名和目录功能。</span> <span>它被设计为独立于任何特定的命名或目录服务实现。</span> <span>因此,可以以一种常见的方式访问各种服务 - 新的,新兴的和已经部署的服务。</span> </p>
<h4> <span>命名事件</span> </h4>
<p> <span>此包定义了一个<tt>NamingEvent</tt>类来表示由命名/目录服务生成的事件。</span> <span>它还定义了<tt>Context</tt><tt>DirContext的子接口</tt> ,称为<tt>EventContext</tt><tt>EventDirContext</tt> ,通过该子<tt>接口</tt> ,应用程序可以注册他们对上下文触发的事件的兴趣。</span> </p>
<p> <span><tt>NamingEvent</tt>表示发生在命名或目录服务中的事件。</span> <span>命名事件有两类:</span> </p>
<ul>
<li> <span>那些影响命名空间(添加/删除/重命名对象)</span> </li>
<li> <span>那些影响对象内容的。</span> </li>
</ul>
<span>事件的每个类别都通过相应的监听器处理<tt><tt>NamespaceChangeListenerObjectChangeListener。</tt></tt></span>
<p> <span>例如,应用程序可以在上下文中注册对对象更改的兴趣,如下所示:</span> </p>
<blockquote>
<span><pre>
EventContext src =
(EventContext)(new InitialContext()).lookup("o=wiz,c=us");
src.addNamingListener("ou=users", EventContext.ONELEVEL_SCOPE,
new ChangeHandler());
...
class ChangeHandler implements ObjectChangeListener {
public void objectChanged(NamingEvent evt) {
System.out.println(evt.getNewBinding());
}
public void namingExceptionThrown(NamingExceptionEvent evt) {
System.out.println(evt.getException());
}
}
</pre></span>
</blockquote>
<span><a name="THREADING"></a></span>
<h4> <span>线程问题</span> </h4>
<span>当一个事件被发送到一个监听器时,监听器方法(如<tt>objectChanged()</tt> )可以在一个除执行了<tt>addNamingListener()</tt>调用的线程之外的一个线程中被执行。</span>
<span>使用哪个线程的选择由服务提供商进行。</span>
<span>当事件被分派到多个监听器时,服务提供者可以选择(并且通常鼓励)在单独的线程中同时执行监听器方法。</span>
<p> <span>当监听器实例调用<tt>NamingEvent.getEventContext()</tt>时,它必须考虑到其他线程将同时处理该上下文的可能性。</span> <span>同样,当通过<tt>addNamingListener()注册</tt>一个监听器时,注册线程必须考虑服务提供商稍后在新创建的线程中调用侦听器的可能性。</span> <span>由于<tt>Context</tt>实例通常不能保证是线程安全的,因此必须根据需要同步所有上下文操作。</span> </p>
<h4> <span>异常处理</span> </h4>
<span>当监听器用上下文注册事件时,上下文可能需要进行一些内部处理,以便收集生成事件所需的信息。</span>
<span>例如,上下文可能需要向服务器发出请求,以注册对服务器上最终将被转换为事件的更改的兴趣。</span>
<span>如果发生异常,从而阻止收集有关事件的信息,则不会将侦听器通知给事件。</span>
<span>发生这种异常时,将<tt>触发NamingExceptionEvent</tt>通知侦听器。</span>
<span>调用监听器的<tt>namingExceptionThrown()</tt>方法,如上面的示例代码所示,并且监听器被自动注销。</span>
<p></p>
<h2> <span>包装规格</span> </h2>
<span>JNDI API规范及相关文档可在发现<a href="../../../../technotes/guides/jndi/index.html">JNDI documentation</a></span>
</div>
<dl>
<dt>
<span class="simpleTagLabel">从以下版本开始:</span>
</dt>
<dd>
1.3
</dd>
</dl>
</div>