- 所有超接口:
-
ObjectFactory
JNDI框架允许通过对象工厂动态加载对象实现。详细信息请参见ObjectFactory。
DirObjectFactory通过允许向getObjectInstance()方法提供一个Attributes实例来扩展ObjectFactory。 DirObjectFactory实现旨在供DirContext服务提供者使用。 除了从目录中读取对象之外,服务提供者可能已经具有对于对象工厂检查是否应处理对象的有用属性。 例如,LDAP风格的服务提供者可能已经读取了对象的"objectclass"。 CORBA对象工厂可能只对具有"objectclass=corbaObject"的LDAP条目感兴趣。 通过使用LDAP服务提供者提供的属性,CORBA对象工厂可以快速排除它不必担心的对象,而非CORBA对象工厂可以快速排除与CORBA相关的LDAP条目。
- 自从:
- 1.3
- 参见:
-
Method Summary
Modifier and TypeMethodDescriptiongetObjectInstance(Object obj, Name name, Context nameCtx, Hashtable<?, ?> environment, Attributes attrs) 使用指定的位置或引用信息和属性创建对象。Methods declared in interface javax.naming.spi.ObjectFactory
getObjectInstance
-
Method Details
-
getObjectInstance
Object getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable<?, ?> environment, Attributes attrs) throws Exception使用指定的位置或引用信息和属性创建对象。通过
environment提供此对象的特殊要求。 一个这样的环境属性的示例是用户身份信息。DirectoryManager.getObjectInstance()连续加载对象工厂。 如果遇到DirObjectFactory,它将调用DirObjectFactory.getObjectInstance();否则,它将调用ObjectFactory.getObjectInstance()。 它会一直这样做,直到有一个工厂产生一个非空答案。当对象工厂抛出异常时,异常将传递给
DirectoryManager.getObjectInstance()的调用者。 停止搜索可能产生非空答案的其他工厂。 只有在确定它是唯一预期的工厂且不应尝试其他对象工厂时,对象工厂才应抛出异常。 如果此工厂无法使用提供的参数创建对象,则应返回null。由于
DirObjectFactory扩展了ObjectFactory,它实际上有两个getObjectInstance()方法,其中一个与另一个通过属性参数不同。 给定实现DirObjectFactory的工厂,DirectoryManager.getObjectInstance()将仅使用接受属性参数的方法,而NamingManager.getObjectInstance()将仅使用不接受属性参数的方法。有关URL上下文工厂和对象工厂的其他属性的描述,同样适用于
DirObjectFactory,请参见ObjectFactory。name、attrs和environment参数由调用者拥有。 实现不会修改这些对象或保留对它们的引用,尽管它可能保留对克隆或副本的引用。- 参数:
-
obj- 可能为null的包含可用于创建对象的位置或引用信息的对象。 -
name- 相对于nameCtx的此对象的名称,如果未指定名称,则为null。 -
nameCtx- 指定name参数的上下文,如果name相对于默认初始上下文,则为null。 -
environment- 用于创建对象的可能为null的环境。 -
attrs- 可能为null的包含obj的一些属性的属性。attrs可能不一定具有obj的所有属性。 如果对象工厂需要更多属性,则需要获取它,可以使用obj,或name和nameCtx。 工厂不得修改attrs。 - 返回:
- 创建的对象;如果无法创建对象,则为null。
- 抛出:
-
Exception- 如果此对象工厂在尝试创建对象时遇到异常,并且不应尝试其他对象工厂。 - 参见:
-