uTools-Manuals/docs/java/javax/naming/spi/StateFactory.html

149 lines
9.8 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">
<div class="subTitle">
compact3
</div>
<div class="subTitle">
javax.naming.spi
</div>
<h2 class="title" title="Interface StateFactory">Interface StateFactory</h2>
</div><div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>
All Known Subinterfaces:
</dt>
<dd>
<span><a href="../../../javax/naming/spi/DirStateFactory.html" title="javax.naming.spi中的接口">DirStateFactory</a></span>
</dd>
</dl>
<hr/> <br/> <pre>public interface <span class="typeNameLabel">StateFactory</span></pre>
<div class="block">
<span>该接口表示用于获取绑定对象的状态的工厂。</span>
<p> <span>JNDI框架允许通过<em>对象工厂动态</em>加载<em>对象实现</em></span> <span>例如,当查找名称空间中绑定的打印机时,如果打印服务将打印机名称绑定到<tt>Reference</tt> s打印机<tt>Reference</tt>可用于创建打印机对象,以便查找的调用者可以直接在打印机对象上操作查找后。</span> </p>
<p> <span>一个<tt>ObjectFactory</tt>负责创建特定类型的对象。</span> <span>在上面的例子中,您可能有一个<tt>PrinterObjectFactory</tt>用于创建<tt>Printer</tt>对象。</span> </p>
<p> <span>对于相反的过程当对象绑定到命名空间中时JNDI提供<em>状态工厂</em></span> <span>继续打印机示例,假设打印机对象已更新并反弹:</span> </p>
<blockquote>
<span><pre>
ctx.rebind("inky", printer);
</pre></span>
</blockquote>
<span><tt>ctx</tt>的服务提供商使用的状态工厂来获得的<tt>printer</tt>的状态结合到它的命名空间。</span>
<span><tt>Printer</tt>类型对象的状态工厂可能会返回一个更紧凑的对象,用于存储在命名系统中。</span>
<p> <span>国家工厂必须实现<tt>StateFactory</tt>接口。</span> <span>此外,工厂类必须是公共的,并且必须有一个不接受参数的公共构造函数。</span> </p>
<p> <span>状态工厂的<tt>getStateToBind()</tt>方法可以被多次调用,可能使用不同的参数。</span> <span>实现是线程安全的。</span> </p>
<p> <span><tt>StateFactory</tt>旨在与仅实现<tt>Context</tt>接口的服务提供商一起使用。</span> <span><tt>DirStateFactory</tt>旨在与实现<tt>DirContext</tt>接口的服务提供商<tt>一起</tt>使用。</span> </p>
</div>
<dl>
<dt>
<span class="simpleTagLabel">从以下版本开始:</span>
</dt>
<dd>
1.3
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<span><a href="../../../javax/naming/spi/NamingManager.html#getStateToBind-java.lang.Object-javax.naming.Name-javax.naming.Context-java.util.Hashtable-"><code>NamingManager.getStateToBind(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable&lt;?, ?&gt;)</code></a> <a href="../../../javax/naming/spi/DirectoryManager.html#getStateToBind-java.lang.Object-javax.naming.Name-javax.naming.Context-java.util.Hashtable-javax.naming.directory.Attributes-"><code>DirectoryManager.getStateToBind(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable&lt;?, ?&gt;, javax.naming.directory.Attributes)</code></a> <a href="../../../javax/naming/spi/ObjectFactory.html" title="javax.naming.spi中的接口"><code>ObjectFactory</code></a> <a href="../../../javax/naming/spi/DirStateFactory.html" title="javax.naming.spi中的接口"><code>DirStateFactory</code></a></span>
</dd>
</dl> </li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- --> </a> <h3>方法摘要</h3>
<table border="0" cellpadding="3" cellspacing="0" class="memberSummary" summary="Method Summary table, listing methods, and an explanation">
<caption>
<span class="activeTableTab" id="t0"><span>所有方法</span><span class="tabEnd"> </span></span>
<span class="tableTab" id="t2"><span><a href="javascript:show(2);">接口方法</a></span><span class="tabEnd"> </span></span>
<span class="tableTab" id="t3"><span><a href="javascript:show(4);">抽象方法</a></span><span class="tabEnd"> </span></span>
</caption>
<tbody>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor" id="i0">
<td class="colFirst"><code><a href="../../../java/lang/Object.html" title="class in java.lang">Object</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/naming/spi/StateFactory.html#getStateToBind-java.lang.Object-javax.naming.Name-javax.naming.Context-java.util.Hashtable-">getStateToBind</a></span>(<a href="../../../java/lang/Object.html" title="class in java.lang">Object</a> obj, <a href="../../../javax/naming/Name.html" title="interface in javax.naming">Name</a> name, <a href="../../../javax/naming/Context.html" title="interface in javax.naming">Context</a> nameCtx, <a href="../../../java/util/Hashtable.html" title="class in java.util">Hashtable</a>&lt;?,?&gt; environment)</code>
<div class="block">
检索绑定对象的状态。
</div> </td>
</tr>
</tbody>
</table> </li>
</ul> </li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- --> </a> <h3>方法详细信息</h3> <a name="getStateToBind-java.lang.Object-javax.naming.Name-javax.naming.Context-java.util.Hashtable-">
<!-- --> </a>
<ul class="blockListLast">
<li class="blockList"> <h4>getStateToBind</h4> <pre><a href="../../../java/lang/Object.html" title="class in java.lang">Object</a> getStateToBind(<a href="../../../java/lang/Object.html" title="class in java.lang">Object</a> obj,
<a href="../../../javax/naming/Name.html" title="interface in javax.naming">Name</a> name,
<a href="../../../javax/naming/Context.html" title="interface in javax.naming">Context</a> nameCtx,
<a href="../../../java/util/Hashtable.html" title="class in java.util">Hashtable</a>&lt;?,?&gt; environment)
throws <a href="../../../javax/naming/NamingException.html" title="class in javax.naming">NamingException</a></pre>
<div class="block">
<span>检索绑定对象的状态。</span>
<p> <span><tt>NamingManager.getStateToBind()</tt>在状态<tt>工厂中</tt>连续加载,并在其上调用此方法,直到产生非空答案。</span> <span><tt>DirectoryManager.getStateToBind()</tt>在国家工厂连续装载。</span> <span>如果工厂实行<tt>DirStateFactory</tt> ,则<tt>DirectoryManager</tt>调用<tt>DirStateFactory.getStateToBind()</tt> ;</span> <span>否则调用<tt>StateFactory.getStateToBind()</tt></span> </p>
<p> <span>当工厂抛出异常时,异常传递给<tt>NamingManager.getStateToBind()</tt><tt>DirectoryManager.getStateToBind()</tt>的调用者。</span> <span>搜索可能产生非空答案的其他工厂停止。</span> <span>如果确定它是唯一的预定工厂,并且没有其他工厂应该被尝试,工厂只应该抛出异常。</span> <span>如果此工厂无法使用提供的参数创建对象则应返回null。</span> </p>
<p> <span><code>name</code><code>nameCtx</code>参数可以可选地用于指定正在创建的对象的名称。</span> <span>见“名称和上下文参数”的描述<a href="../../../javax/naming/spi/ObjectFactory.html#getObjectInstance-java.lang.Object-javax.naming.Name-javax.naming.Context-java.util.Hashtable-"><code>ObjectFactory.getObjectInstance()</code></a>了解详情。</span> <span>如果一个工厂使用<code>nameCtx</code>它应该将它的使用与并发访问同步,因为上下文实现不能保证是线程安全的。</span> </p>
<p> <span><tt>name</tt><tt>environment</tt>参数由呼叫者拥有。</span> <span>尽管它可能会保留对克隆或副本的引用,但实现不会修改这些对象或保留对它们的引用。</span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>obj</code> - 要检索其状态的非空对象。
</dd>
<dd>
<code>name</code> - 相对于
<code>nameCtx</code>的此对象的名称如果未指定名称则为null。
</dd>
<dd>
<code>nameCtx</code> - 指定
<code>name</code>参数的上下文,如果
<code>name</code>相对于默认的初始上下文则为null。
</dd>
<dd>
<code>environment</code> - 用于创建对象状态的可能的空环境。
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
<span>对象的绑定状态;</span>
<span>如果工厂没有返回任何更改则为null。</span>
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../javax/naming/NamingException.html" title="class in javax.naming">NamingException</a></code> - 如果此工厂在尝试获取对象的状态时遇到异常,并且不会尝试其他工厂。
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../javax/naming/spi/NamingManager.html#getStateToBind-java.lang.Object-javax.naming.Name-javax.naming.Context-java.util.Hashtable-"><code>NamingManager.getStateToBind(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable&lt;?, ?&gt;)</code></a>,
<a href="../../../javax/naming/spi/DirectoryManager.html#getStateToBind-java.lang.Object-javax.naming.Name-javax.naming.Context-java.util.Hashtable-javax.naming.directory.Attributes-"><code>DirectoryManager.getStateToBind(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable&lt;?, ?&gt;, javax.naming.directory.Attributes)</code></a>
</dd>
</dl> </li>
</ul> </li>
</ul> </li>
</ul>
</div>
</div>