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

152 lines
10 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 DirObjectFactory">Interface DirObjectFactory</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/ObjectFactory.html" title="javax.naming.spi中的接口">ObjectFactory</a></span>
</dd>
</dl>
<hr/> <br/> <pre>public interface <span class="typeNameLabel">DirObjectFactory</span>
extends <a href="../../../javax/naming/spi/ObjectFactory.html" title="interface in javax.naming.spi">ObjectFactory</a></pre>
<div class="block">
<span>该接口代表一个用于创建给定对象的对象的工厂,以及关于该对象的属性。</span>
<p> <span>JNDI框架允许通过<em>对象工厂动态</em>加载<em>对象实现</em></span> <span>详见<tt>ObjectFactory</tt></span> </p>
<p> <span>A <tt>DirObjectFactory</tt>通过允许向<tt>getObjectInstance()</tt>方法提供<tt>Attributes</tt>实例来扩展<tt>ObjectFactory</tt></span> <span><tt>DirObjectFactory</tt>实现旨在由<tt>DirContext</tt>服务提供商使用。</span> <span>服务提供商除了从目录中读取一个对象之外,可能已经具有对象工厂检查工厂是否应该处理该对象的属性。</span> <span>例如LDAP风格的服务提供商可能已经读取了该对象的“objectclass”。</span> <span>CORBA对象工厂可能只对具有“objectclass = corbaObject”的LDAP条目感兴趣。</span> <span>通过使用LDAP服务提供商提供的属性CORBA对象工厂可以快速消除不必担心的对象非CORBA对象工厂可以快速消除与CORBA相关的LDAP条目。</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#getObjectInstance-java.lang.Object-javax.naming.Name-javax.naming.Context-java.util.Hashtable-"><code>NamingManager.getObjectInstance(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable&lt;?, ?&gt;)</code></a> <a href="../../../javax/naming/spi/DirectoryManager.html#getObjectInstance-java.lang.Object-javax.naming.Name-javax.naming.Context-java.util.Hashtable-javax.naming.directory.Attributes-"><code>DirectoryManager.getObjectInstance(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></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/DirObjectFactory.html#getObjectInstance-java.lang.Object-javax.naming.Name-javax.naming.Context-java.util.Hashtable-javax.naming.directory.Attributes-">getObjectInstance</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> attrs)</code>
<div class="block">
使用位置或参考信息和指定的属性创建对象。
</div> </td>
</tr>
</tbody>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.javax.naming.spi.ObjectFactory">
<!-- --> </a> <h3>Methods inherited from interface javax.naming.spi.<a href="../../../javax/naming/spi/ObjectFactory.html" title="interface in javax.naming.spi">ObjectFactory</a></h3> <code><a href="../../../javax/naming/spi/ObjectFactory.html#getObjectInstance-java.lang.Object-javax.naming.Name-javax.naming.Context-java.util.Hashtable-">getObjectInstance</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="getObjectInstance-java.lang.Object-javax.naming.Name-javax.naming.Context-java.util.Hashtable-javax.naming.directory.Attributes-">
<!-- --> </a>
<ul class="blockListLast">
<li class="blockList"> <h4>getObjectInstance</h4> <pre><a href="../../../java/lang/Object.html" title="class in java.lang">Object</a> getObjectInstance(<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> attrs)
throws <a href="../../../java/lang/Exception.html" title="class in java.lang">异常</a></pre>
<div class="block">
<span>使用位置或参考信息和指定的属性创建对象。</span>
<p> <span>该对象的特殊要求是使用<code>environment</code>提供的。</span> <span>这样的环境属性的示例是用户身份信息。</span> </p>
<p> <span><tt>DirectoryManager.getObjectInstance()</tt>连续装载物件工厂。</span> <span>如果遇到<tt>DirObjectFactory</tt> ,它将调用<tt>DirObjectFactory.getObjectInstance()</tt> ;</span> <span>否则,它调用<tt>ObjectFactory.getObjectInstance()</tt></span> <span>这样做直到工厂产生非空答案。</span> </p>
<p> <span>当对象工厂引发异常时,异常传递给<tt>DirectoryManager.getObjectInstance()</tt>的调用者。</span> <span>搜索可能产生非空答案的其他工厂停止。</span> <span>如果对象工厂确定它是唯一的预定工厂,并且没有其他对象工厂应该被尝试,那么对象工厂应该只抛出异常。</span> <span>如果此工厂无法使用提供的参数创建对象则应返回null。</span> </p>
<p> <span>由于<tt>DirObjectFactory</tt>扩展为<tt>ObjectFactory</tt> ,它有效地具有两个<tt>getObjectInstance()</tt>方法其中一个不同于attribute参数。</span> <span>给定一个实现<tt>DirObjectFactory</tt>的工厂, <tt>DirectoryManager.getObjectInstance()</tt>将只使用接受attributes参数的方法<tt>NamingManager.getObjectInstance()</tt>将只使用不接受attributes参数的方法。</span> </p>
<p> <span>请参阅<tt>ObjectFactory</tt> 了解对象工厂的URL上下文工厂和其他属性这些属性同样适用于<tt>DirObjectFactory</tt></span> </p>
<p> <span><tt><tt>nameattrs</tt></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>
<dd>
<span><code>attrs</code> -包含一些<tt>obj</tt>的属性的可能为null的属性。</span>
<span><tt>attrs</tt>不一定有所有<tt>obj</tt>的属性。</span>
<span>如果对象工厂需要更多属性,则需要使用<tt>obj</tt><tt>name</tt><tt>nameCtx</tt></span>
<span>工厂不得修改attrs。</span>
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
<span>创建对象</span>
<span>如果无法创建对象则为null。</span>
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../java/lang/Exception.html" title="class in java.lang">异常</a></code> - 如果此对象工厂在尝试创建对象时遇到异常,并且不会尝试其他对象工厂。
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../javax/naming/spi/DirectoryManager.html#getObjectInstance-java.lang.Object-javax.naming.Name-javax.naming.Context-java.util.Hashtable-javax.naming.directory.Attributes-"><code>DirectoryManager.getObjectInstance(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/NamingManager.html#getURLContext-java.lang.String-java.util.Hashtable-"><code>NamingManager.getURLContext(java.lang.String, java.util.Hashtable&lt;?, ?&gt;)</code></a>
</dd>
</dl> </li>
</ul> </li>
</ul> </li>
</ul>
</div>
</div>