java命名空间javax.naming.spi接口objectfactory的类成员方法:
getobjectinstance定义及介绍
本文导语:
getobjectinstance
object getobjectinstance(object obj,
name name,
context namectx,
hashtable environment)
throws exception
使用指定的位置或引用信息创建一个对象。 ...
getobjectinstance
object getobjectinstance(object obj,
name name,
context namectx,
hashtable,?> environment)
throws exception
- 使用指定的位置或
iis7站长之家信息创建一个对象。
使用 environment
提供此对象的特殊需要。这种 environment 属性的一个示例是用户身份信息。
namingmanager.getobjectinstance() 接连在对象工厂中加载,并在这些工厂上调用此方法,直到某一工厂产生非 null 应答。当对象工厂抛出异常时,该异常被传递给 namingmanager.getobjectinstance() 的调用者(并且不再搜索可能产生非 null 应答的其他工厂)。对象工厂只有在可以确定它是唯一需要的工厂并且不应该再尝试其他对象工厂时才抛出异常。如果此对象工厂无法使用所提供的参数创建对象,则它应该返回 null。
url 上下文工厂 是一个特殊的 objectfactory,它创建用于解析 url 或位置由 url 指定的对象的上下文。url 上下文工厂的 getobjectinstance() 方法将遵守以下规则。
- 如果
obj
为 null,则创建一个上下文,该上下文用于解析与此工厂关联的方案的 url。得到的上下文没有绑定到特定 url:它能够使用此工厂的方案 id 处理任意 url。例如,在 ldap url 上下文工厂上调用将 obj
设置为 null 的 getobjectinstance() 将返回一个可以解析 ldap url(比如 "ldap://ldap.wiz.com/o=wiz,c=us" 和 "ldap://ldap.umich.edu/o=umich,c=us")的上下文。
-
如果
obj
是一个 url 字符串,则创建由该 url 标识的对象(通常是一个上下文)。例如,假设这是一个 ldap url 上下文工厂。如果 obj
是 "ldap://ldap.wiz.com/o=wiz,c=us",则 getobjectinstance() 将返回由 ldap 服务器 ldap.wiz.com 上的标识名 "o=wiz, c=us" 指定的上下文。然后可以使用此上下文解析相对于该上下文的 ldap 名称(比如 "cn=george")。
-
如果
obj
是一个 url 字符串数组,则根据它们所引用的上下文假定这些 url 相等。验证这些 url 是否相等或是否需要相等取决于上下文工厂。数组中 url 的顺序无关紧要。由 getobjectinstance() 返回的对象类似于单个 url 的情况下返回的对象。该对象是由 url 指定的对象。
-
如果
obj
属于其他任何类型,则 getobjectinstance() 的行为由上下文工厂实现确定。
name 和 environment 参数都归调用者所有。该实现不会修改这些对象或保存对它们的引用,尽管它可能保存对这些对象的副本的引用。
名称和上下文参数。
可以有选择地使用 name
和 namectx
参数来指定将创建的对象的名称。name
是该对象相对于上下文 namectx
的名称。如果有几个可以从中指定对象的可能上下文(通常会是这种情况),则由调用者决定选择哪一个。根据经验,应选择“最深的”可用上下文。如果 namectx
为 null,则 name
相对于默认初始上下文。如果没有名称将被指定,则 name
参数应该为 null。如果某一工厂使用 namectx
,则它应该将其使用与并发访问同步,因为无法保证上下文实现是线程安全的。
- 参数:
obj
- 包含可在创建对象时使用的位置或引用信息的对象(可能为 null)。name
- 此对象相对于 namectx
的名称,如果没有指定名称,则该参数为 null。namectx
- 一个上下文,name
参数是相对于该上下文指定的,如果 name
相对于默认初始上下文,则该参数为 null。environment
- 创建对象时使用的环境(可能为 null)。
- 返回:
- 已创建的对象;如果无法创建对象,则返回 null。
- 抛出:
exception
- 如果此对象工厂在试图创建对象时遇到异常,并且不再尝试其他对象工厂。- 另请参见:
namingmanager.getobjectinstance(java.lang.object, javax.naming.name, javax.naming.context, java.util.hashtable, ?>)
,
namingmanager.geturlcontext(java.lang.string, java.util.hashtable, ?>)