使用位置或引用信息以及指定的属性创建一个对象。
使用 environment
提供此对象的特殊需要。这种 environment 属性的一个示例是用户身份信息。
directorymanager.getobjectinstance() 接连在对象工厂中进行加载。如果遇到 dirobjectfactory,它将调用 dirobjectfactory.getobjectinstance();否则它将调用 objectfactory.getobjectinstance()。它将持续这样做,直到某一工厂产生非 null 应答。
当对象工厂抛出异常时,该异常被传递给 directorymanager.getobjectinstance() 的调用者。停止搜索可能产生非 null 应答的其他工厂。对象工厂只有在可以确定它是唯一需要的工厂并且不应该再尝试其他对象工厂时才抛出异常。如果此对象工厂无法使用所提供的参数创建对象,则它应该返回 null。
因为 dirobjectfactory 扩展了 objectfactory,所以它实际上有两个 getobjectinstance() 方法,其中一个方法在属性参数上不同于另一个方法。给出一个实现 dirobjectfactory 的工厂,directorymanager.getobjectinstance() 将只使用接受属性参数的方法,而 namingmanager.getobjectinstance() 将只使用不接收属性参数的方法。
有关 url 上下文工厂和对象工厂其他属性的描述,请参阅 objectfactory,它同样适用于 dirobjectfactory。
name、attrs 和 environment 参数都归调用者所有。该实现不会修改这些对象或保存对它们的引用,尽管它可能保存对这些对象的副本的引用。
- 参数:
obj
- 包含可在创建对象时使用的位置或引用信息的对象(可能为 null)。name
- 此对象相对于 namectx
的名称,如果没有指定名称,则该参数为 null。namectx
- 一个上下文,name
参数是相对于该上下文指定的,如果 name
相对于默认初始上下文,则该参数为 null。environment
- 创建对象时使用的环境(可能为 null)。attrs
- 包含 obj 的某些属性的属性(可能为 null)。attrs 不一定拥有 obj 的所有属性。如果对象工厂需要更多的属性,则需要使用 obj 或者 name 和 namectx 获取。该工厂不得修改 attrs。
- 返回:
- 已创建的对象;如果无法创建对象,则返回 null。
- 抛出:
exception
- 如果此对象工厂在试图创建对象时遇到异常,并且不再尝试其他对象工厂。- 另请参见:
directorymanager.getobjectinstance(java.lang.object, javax.naming.name, javax.naming.context, java.util.hashtable, ?>, javax.naming.directory.attributes)
,
namingmanager.geturlcontext(java.lang.string, java.util.hashtable, ?>)