public interface DirObjectFactory extends ObjectFactory
JNDI框架允许通过对象工厂动态加载对象实现 。 详见ObjectFactory 。
A DirObjectFactory通过允许向getObjectInstance()方法提供Attributes实例来扩展ObjectFactory 。 DirObjectFactory实现旨在由DirContext服务提供商使用。 服务提供商除了从目录中读取一个对象之外,可能已经具有对象工厂检查工厂是否应该处理该对象的属性。 例如,LDAP风格的服务提供商可能已经读取了该对象的“objectclass”。 CORBA对象工厂可能只对具有“objectclass = corbaObject”的LDAP条目感兴趣。 通过使用LDAP服务提供商提供的属性,CORBA对象工厂可以快速消除不必担心的对象,非CORBA对象工厂可以快速消除与CORBA相关的LDAP条目。
NamingManager.getObjectInstance(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable<?, ?>)
, DirectoryManager.getObjectInstance(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable<?, ?>, javax.naming.directory.Attributes)
, ObjectFactory
Modifier and Type | Method and Description |
---|---|
Object |
getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable<?,?> environment, Attributes attrs)
使用位置或参考信息和指定的属性创建对象。
|
getObjectInstance
Object getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable<?,?> environment, Attributes attrs) throws 异常
该对象的特殊要求是使用environment
提供的。 这样的环境属性的示例是用户身份信息。
DirectoryManager.getObjectInstance()连续装载物件工厂。 如果遇到DirObjectFactory ,它将调用DirObjectFactory.getObjectInstance() ; 否则,它调用ObjectFactory.getObjectInstance() 。 这样做直到工厂产生非空答案。
当对象工厂引发异常时,异常传递给DirectoryManager.getObjectInstance()的调用者。 搜索可能产生非空答案的其他工厂停止。 如果对象工厂确定它是唯一的预定工厂,并且没有其他对象工厂应该被尝试,那么对象工厂应该只抛出异常。 如果此工厂无法使用提供的参数创建对象,则应返回null。
由于DirObjectFactory扩展为ObjectFactory ,它有效地具有两个getObjectInstance()方法,其中一个不同于attribute参数。 给定一个实现DirObjectFactory的工厂, DirectoryManager.getObjectInstance()将只使用接受attributes参数的方法,而NamingManager.getObjectInstance()将只使用不接受attributes参数的方法。
请参阅ObjectFactory ,了解对象工厂的URL上下文工厂和其他属性,这些属性同样适用于DirObjectFactory 。
该name,attrs和environment参数由调用者所有。 尽管它可能会保留对克隆或副本的引用,但实现不会修改这些对象或保留对它们的引用。
obj
- 可能包含可用于创建对象的位置或引用信息的空对象。
name
- 相对于
nameCtx
的此对象的名称,如果未指定名称,则为null。
nameCtx
- 指定
name
参数的上下文,如果
name
相对于默认初始上下文,则为null。
environment
- 用于创建对象的可能的空环境。
attrs
-包含一些obj的属性的可能为null的属性。
attrs不一定有所有obj的属性。
如果对象工厂需要更多属性,则需要使用obj或name和nameCtx 。
工厂不得修改attrs。
异常
- 如果此对象工厂在尝试创建对象时遇到异常,并且不会尝试其他对象工厂。
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<?, ?>)
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.