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

182 lines
12 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 DirStateFactory">Interface DirStateFactory</h2>
</div><div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>
All Superinterfaces:
</dt>
<dd>
<span><a href="../../../javax/naming/spi/StateFactory.html" title="javax.naming.spi中的接口">StateFactory</a></span>
</dd>
</dl>
<hr/> <br/> <pre>public interface <span class="typeNameLabel">DirStateFactory</span>
extends <a href="../../../javax/naming/spi/StateFactory.html" title="interface in javax.naming.spi">StateFactory</a></pre>
<div class="block">
<span>该接口表示用于获取对象的状态的工厂和用于绑定的相应属性。</span>
<p> <span>JNDI框架允许通过<tt>object factories动态</tt>加载对象<tt>实现</tt></span> </p>
<p> <span>A <tt>DirStateFactory</tt>扩展了<tt>StateFactory</tt> ,允许<tt>Attributes</tt>实例提供给<tt>getStateToBind()</tt>方法返回。</span> <span><tt>DirStateFactory</tt>实现旨在由<tt>DirContext</tt>服务提供商使用。</span> <span>当调用者使用<tt>DirContext.bind()</tt>绑定对象时,他也可以指定要与对象绑定的一组属性。</span> <span>要绑定的对象和属性被传递给工厂的<tt>getStateToBind()</tt>方法。</span> <span>如果工厂处理对象和属性,则返回一对相应的对象和属性对象。</span> <span>如果工厂没有处理对象它必须返回null。</span> </p>
<p> <span>例如,调用者可能会将打印机对象与某些与打印机相关的属性进行绑定。</span> </p>
<blockquote>
<span><pre>
ctx.rebind("inky", printer, printerAttrs);
</pre></span>
</blockquote>
<span><tt>ctx</tt>的LDAP服务提供商使用<tt>DirStateFactory</tt> (间接通过<tt>DirectoryManager.getStateToBind()</tt> ),并给它<tt>printer</tt><tt>printerAttrs</tt></span>
<span>LDAP目录的工厂可能<tt>会将printer</tt>转换为一组属性,并将其与<tt>printerAttrs进行</tt>合并。</span>
<span>然后服务提供商使用生成的属性来创建LDAP条目并更新目录。</span>
<p> <span>由于<tt>DirStateFactory</tt>扩展了<tt>StateFactory</tt> ,它有两个<tt>getStateToBind()</tt>方法其中一个不同于attribute参数。</span> <span><tt>DirectoryManager.getStateToBind()</tt>将只使用接受attributes参数的表单<tt>NamingManager.getStateToBind()</tt>将只使用不接受attributes参数的表单。</span> </p>
<p> <span>可以多次调用DirStateFactory的<tt>getStateToBind()</tt>方法的任一形式,可能使用不同的参数。</span> <span>实现是线程安全的。</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/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/DirObjectFactory.html" title="javax.naming.spi中的接口"><code>DirObjectFactory</code></a></span>
</dd>
</dl> </li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="nested.class.summary">
<!-- --> </a> <h3>Nested Class Summary</h3>
<table border="0" cellpadding="3" cellspacing="0" class="memberSummary" summary="Nested Class Summary table, listing nested classes, and an explanation">
<caption>
<span>Nested Classes</span>
<span class="tabEnd"> </span>
</caption>
<tbody>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Interface and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/naming/spi/DirStateFactory.Result.html" title="class in javax.naming.spi">DirStateFactory.Result</a></span></code>
<div class="block">
用于返回DirStateFactory.getStateToBind的结果的对象/属性对。
</div> </td>
</tr>
</tbody>
</table> </li>
</ul>
<!-- ========== 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="../../../javax/naming/spi/DirStateFactory.Result.html" title="class in javax.naming.spi">DirStateFactory.Result</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/naming/spi/DirStateFactory.html#getStateToBind-java.lang.Object-javax.naming.Name-javax.naming.Context-java.util.Hashtable-javax.naming.directory.Attributes-">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, <a href="../../../javax/naming/directory/Attributes.html" title="interface in javax.naming.directory">Attributes</a> inAttrs)</code>
<div class="block">
在给定要转换的对象和属性的情况下,检索绑定对象的状态。
</div> </td>
</tr>
</tbody>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.javax.naming.spi.StateFactory">
<!-- --> </a> <h3>Methods inherited from interface javax.naming.spi.<a href="../../../javax/naming/spi/StateFactory.html" title="interface in javax.naming.spi">StateFactory</a></h3> <code><a href="../../../javax/naming/spi/StateFactory.html#getStateToBind-java.lang.Object-javax.naming.Name-javax.naming.Context-java.util.Hashtable-">getStateToBind</a></code></li>
</ul> </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-javax.naming.directory.Attributes-">
<!-- --> </a>
<ul class="blockListLast">
<li class="blockList"> <h4>getStateToBind</h4> <pre><a href="../../../javax/naming/spi/DirStateFactory.Result.html" title="class in javax.naming.spi">DirStateFactory.Result</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,
<a href="../../../javax/naming/directory/Attributes.html" title="interface in javax.naming.directory">Attributes</a> inAttrs)
throws <a href="../../../javax/naming/NamingException.html" title="class in javax.naming">NamingException</a></pre>
<div class="block">
<span>在给定要转换的对象和属性的情况下,检索绑定对象的状态。</span>
<p> <span><tt>DirectoryManager.getStateToBind()</tt>在国家工厂连续装载。</span> <span>如果工厂实行<tt>DirStateFactory</tt> <tt></tt>调用此方法; <tt>DirectoryManager</tt></span> <span>否则,它调用<tt>StateFactory.getStateToBind()</tt></span> <span>这样做直到工厂产生非空答案。</span> </p>
<p> <span>当工厂抛出异常时,异常传递给<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><tt>nameinAttrs</tt></tt><tt>environment</tt>参数由调用者所有。</span> <span>尽管它可能会保留对克隆或副本的引用,但实现不会修改这些对象或保留对它们的引用。</span> <span>该方法返回的对象由调用者拥有。</span> <span>实施不会随后修改。</span> <span>它将包含同样由调用者拥有的新的<tt>Attributes</tt>对象或对原始<tt>inAttrs</tt>参数的引用。</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>
<dd>
<span><code>inAttrs</code> - 要与对象绑定的可能的空属性。</span>
<span>工厂不得修改<tt>inAttrs</tt></span>
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
<span>将含有该对象的结合状态<tt>Result</tt>和相应的属性的约束;</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/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>