java命名空间javax.naming.spi类namingmanager的类成员方法:
getobjectinstance定义及介绍
本文导语:
getobjectinstance
public static object getobjectinstance(object refinfo,
name name,
context namectx,
hashtable environment)
throws exception
为...
getobjectinstance
public static object getobjectinstance(object refinfo,
name name,
context namectx,
hashtable,?> environment)
throws exception
- 为指定对象和环境创建一个对象实例。
如果已经安装了一个对象工厂生成器,则使用它来创建用于创建对象的工厂。否则使用以下规则来创建该对象:
- 如果
refinfo
是一个包含工厂类名称的 reference
或 referenceable
,则使用指定的工厂来创建该对象。如果无法创建工厂,则返回 refinfo
。从 jdk 1.1 开始,如果必须从引用中指定的位置加载工厂类,则必须已经安装 securitymanager,否则工厂创建将失败。如果在创建工厂时遇到异常,则将该异常传递到调用者。
- 如果 refinfo 是一个不带工厂类名称的 reference 或 referenceable,并且该地址或这些地址是地址类型为 "url" 的 stringrefaddr,则尝试使用对应于每个 url 方案 id 的 url 上下文工厂来创建该对象(参见 geturlcontext())。如果失败,则继续下一个步骤。
- 使用环境的 context.object_factories 属性和与 namectx 关联的提供者资源文件的 context.object_factories 属性中指定的对象工厂,并使用原来的顺序。此属性的值是按顺序尝试的以冒号分隔的工厂类名称列表,使用的名称是第一个成功创建对象的名称。如果没有加载任何工厂,则返回
refinfo
。如果在创建对象时遇到异常,则将该异常传递到调用者。
实现 dircontext 接口的服务提供者应该使用 directorymanager.getobjectinstance() 而不是此方法。只实现 context 接口的服务提供者应该使用此方法。
注意,对象工厂(实现 objectfactory 接口的对象)必须是公共的,并且必须有一个不接受任何参数的公共构造方法。
可以有选择地使用 name
和 namectx
参数来指定将创建的对象的名称。name
是该对象相对于上下文 namectx
的名称。此信息对于对象工厂或对象实现可能很有用。如果有几个可以从中指定对象的可能上下文(通常会是这种情况),则由调用者决定选择哪一个。根据经验,应选择“最深的”可用上下文。如果 namectx
为 null,则 name
相对于默认初始上下文。如果没有名称将被指定,则 name
参数应该为 null。
- 参数:
refinfo
- 将为之创建对象的对象(可能为 null)。name
- 此对象的相对于 namectx
的名称。指定名称是可选操作;如果忽略名称,则 name
应该为 null。namectx
- 一个上下文,name
参数是相对于该上下文指定的。如果为 null,则 name
相对于默认初始上下文。environment
- 将在创建对象和对象工厂时使用的环境(可能为 null)。
- 返回:
- 使用
refinfo
创建的对象;如果无法使用上述算法创建对象,则返回 refinfo
。
- 抛出:
namingexception
- 如果在试图获得 url 上下文时遇到命名异常,或者受访问的工厂之一抛出 namingexception。
exception
- 如果受访问的工厂之一抛出异常,或者加载和实例化工厂和对象类时遇到错误。工厂只有在不希望试图使用其他工厂创建对象时才抛出异常。请参见 objectfactory.getobjectinstance()。- 另请参见:
geturlcontext(java.lang.string, java.util.hashtable, ?>)
,
objectfactory
,
objectfactory.getobjectinstance(java.lang.object, javax.naming.name, javax.naming.context, java.util.hashtable, ?>)