mirror of
https://github.com/fofolee/uTools-Manuals.git
synced 2025-07-07 01:42:48 +08:00
149 lines
11 KiB
HTML
149 lines
11 KiB
HTML
<div class="header">
|
||
<div class="subTitle">
|
||
compact3
|
||
</div>
|
||
<div class="subTitle">
|
||
javax.naming.spi
|
||
</div>
|
||
<h2 class="title" title="Interface ObjectFactory">Interface ObjectFactory</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/DirObjectFactory.html" title="javax.naming.spi中的接口">DirObjectFactory</a></span>
|
||
</dd>
|
||
</dl>
|
||
<hr/> <br/> <pre>public interface <span class="typeNameLabel">ObjectFactory</span></pre>
|
||
<div class="block">
|
||
<span>此接口表示用于创建对象的工厂。</span>
|
||
<p> <span>JNDI框架允许通过<em>对象工厂动态</em>加载<em>对象实现</em> 。</span> <span>例如,当查找名称空间中绑定的打印机时,如果打印服务将打印机名称绑定到引用,则打印机参考可用于创建打印机对象,以便查找的调用者可以在打印机对象之后直接操作查找。</span> </p>
|
||
<p> <span>一个<tt>ObjectFactory</tt>负责创建特定类型的对象。</span> <span>在上面的例子中,您可能有一个PrinterObjectFactory来创建打印机对象。</span> </p>
|
||
<p> <span>对象工厂必须实现<tt>ObjectFactory</tt>界面。</span> <span>此外,工厂类必须是公共的,并且必须有一个不接受参数的公共构造函数。</span> </p>
|
||
<p> <span>对象工厂的<tt>getObjectInstance()</tt>方法可以被多次调用,可能使用不同的参数。</span> <span>实现是线程安全的。</span> </p>
|
||
<p> <span>该类文档中提及的URL是指RFC 1738及其相关RFC定义的URL字符串。</span> <span>它是符合其中描述的语法的任何字符串,并且可能不总是在java.net.URL类或Web浏览器中具有相应的支持。</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<?, ?>)</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<?, ?>)</code></a> , <a href="../../../javax/naming/spi/ObjectFactoryBuilder.html" title="javax.naming.spi中的接口"><code>ObjectFactoryBuilder</code></a> , <a href="../../../javax/naming/spi/StateFactory.html" title="javax.naming.spi中的接口"><code>StateFactory</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/ObjectFactory.html#getObjectInstance-java.lang.Object-javax.naming.Name-javax.naming.Context-java.util.Hashtable-">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><?,?> 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="getObjectInstance-java.lang.Object-javax.naming.Name-javax.naming.Context-java.util.Hashtable-">
|
||
<!-- --> </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><?,?> environment)
|
||
throws <a href="../../../java/lang/Exception.html" title="class in java.lang">异常</a></pre>
|
||
<div class="block">
|
||
<span>使用指定的位置或引用信息创建对象。</span>
|
||
<p> <span>使用<code>environment</code>提供此对象的特殊<code>environment</code> 。</span> <span>这样的环境属性的示例是用户身份信息。</span> </p>
|
||
<p> <span><tt>NamingManager.getObjectInstance()</tt>依次加载对象工厂,并在其上调用此方法,直到产生非空答案。</span> <span>当对象工厂抛出异常时,异常传递给<tt>NamingManager.getObjectInstance()</tt>的调用者(并且不会对可能产生非空答案的其他工厂进行搜索)。</span> <span>如果对象工厂确定它是唯一的预定工厂,并且没有其他对象工厂应该被尝试,那么对象工厂应该只抛出异常。</span> <span>如果此工厂无法使用提供的参数创建对象,则应返回null。</span> </p>
|
||
<p> <span><em>URL上下文工厂</em>是一个特殊的ObjectFactory,它创建用于解析URL或由URL指定位置的对象的上下文。</span> <span>URL上下文工厂的<tt>getObjectInstance()</tt>方法将遵循以下规则。</span> </p>
|
||
<ol>
|
||
<li> <span>如果<code>obj</code>为空,则创建一个上下文来解析与此工厂关联的方案的URL。</span> <span>所得到的上下文不与特定URL绑定:它可以使用此工厂的方案ID来处理任意URL。</span> <span>例如,在LDAP URL上下文工厂上调用<tt>obj</tt>设置为null的<code>obj</code>将返回一个可以解析LDAP URL的上下文,例如“ldap://ldap.wiz.com/o=wiz,c=us”和“ldap: //ldap.umich.edu/o=umich,c=us“。</span> </li>
|
||
<li> <span>如果<code>obj</code>是URL字符串,则创建由URL标识的对象(通常为上下文)。</span> <span>例如,假设这是LDAP URL上下文工厂。</span> <span>如果<code>obj</code>是“ldap://ldap.wiz.com/o=wiz,c=us”,则getObjectInstance()将返回由LDAP服务器ldap上的可分辨名称“o = wiz,c = us”命名的上下文。 wiz.com。</span> <span>然后,该上下文可用于解析相对于该上下文的LDAP名称(例如“cn = George”)。</span> </li>
|
||
<li> <span>如果<code>obj</code>是一个URL字符串数组,那么这个假设是这些URL在它们引用的上下文中是等价的。</span> <span>验证URL是否需要等同于上下文工厂。</span> <span>数组中URL的顺序不重要。</span> <span>getObjectInstance()返回的对象与单个URL的情况类似。</span> <span>它是由URL命名的对象。</span> </li>
|
||
<li> <span>如果<code>obj</code>是任何其他类型, <tt>getObjectInstance()</tt>的行为由上下文工厂实现确定。</span> </li>
|
||
</ol>
|
||
<p> <span><tt>name</tt>和<tt>environment</tt>参数由呼叫者拥有。</span> <span>尽管它可能会保留对克隆或副本的引用,但实现不会修改这些对象或保留对它们的引用。</span> </p>
|
||
<p> <span><b>名称和上下文参数。</b></span> <span><a name="NAMECTX"></a> <code>name</code>和<code>nameCtx</code>参数可以可选地用于指定正在创建的对象的名称。</span> <span><code>name</code>是对象的名称,相对于上下文<code>nameCtx</code> 。</span> <span>如果有几个可能的对象可以被命名的上下文(通常是这样),则由调用者来选择一个。</span> <span>一个很好的经验法则是选择“最深”的上下文。</span> <span>如果<code>nameCtx</code>为空,则<code>name</code>是相对于默认的初始上下文。</span> <span>如果没有指定名称,那么<code>name</code>参数应该为空。</span> <span>如果工厂使用<code>nameCtx</code>它应该将其使用与并发访问同步,因为上下文实现不能保证是线程安全的。</span> </p>
|
||
<p></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="../../../java/lang/Exception.html" title="class in java.lang">异常</a></code> - 如果此对象工厂在尝试创建对象时遇到异常,并且不会尝试其他对象工厂。
|
||
</dd>
|
||
<dt>
|
||
<span class="seeLabel">另请参见:</span>
|
||
</dt>
|
||
<dd>
|
||
<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<?, ?>)</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<?, ?>)</code></a>
|
||
</dd>
|
||
</dl> </li>
|
||
</ul> </li>
|
||
</ul> </li>
|
||
</ul>
|
||
</div>
|
||
</div> |