- 所有超接口:
-
StateFactory
JNDI框架允许通过对象工厂
动态加载对象实现。
DirStateFactory
通过允许向getStateToBind()
方法提供并返回Attributes
实例来扩展StateFactory
。 DirStateFactory
实现旨在供DirContext
服务提供者使用。当调用者使用DirContext.bind()
绑定对象时,他可能还指定一组要与对象一起绑定的属性。要绑定的对象和属性传递给工厂的getStateToBind()
方法。如果工厂处理对象和属性,则返回相应的对象和要绑定的属性对。如果工厂不处理对象,则必须返回null。
例如,调用者可能使用一些与打印机相关的属性绑定打印机对象。
ctx.rebind("inky", printer, printerAttrs);
ctx
的LDAP服务提供者使用DirStateFactory
(间接通过DirectoryManager.getStateToBind()
)并给出printer
和printerAttrs
。 LDAP目录的工厂可能将printer
转换为一组属性并将其与printerAttrs
合并。 然后,服务提供者使用生成的属性创建LDAP条目并更新目录。
由于DirStateFactory
扩展了StateFactory
,它具有两个getStateToBind()
方法,其中一个与另一个不同的地方在于属性参数。 DirectoryManager.getStateToBind()
将仅使用接受属性参数的形式,而NamingManager.getStateToBind()
将仅使用不接受属性参数的形式。
DirStateFactory的getStateToBind()
方法的任一形式可能被多次调用,可能使用不同的参数。 实现是线程安全的。
- 自版本:
- 1.3
- 参见:
-
Nested Class Summary
Modifier and TypeInterfaceDescriptionstatic class
用于返回DirStateFactory.getStateToBind()结果的对象/属性对。 -
Method Summary
Modifier and TypeMethodDescriptiongetStateToBind
(Object obj, Name name, Context nameCtx, Hashtable<?, ?> environment, Attributes inAttrs) 给定要转换的对象和属性,检索对象的绑定状态。Methods declared in interface javax.naming.spi.StateFactory
getStateToBind
-
Method Details
-
getStateToBind
DirStateFactory.Result getStateToBind(Object obj, Name name, Context nameCtx, Hashtable<?, ?> environment, Attributes inAttrs) throws NamingException给定要转换的对象和属性,检索对象的绑定状态。DirectoryManager.getStateToBind()
连续加载状态工厂。 如果工厂实现了DirStateFactory
,DirectoryManager
将调用此方法;否则,它将调用StateFactory.getStateToBind()
。 它会一直这样做,直到工厂产生非null答案。当工厂抛出异常时,异常将传递给
DirectoryManager.getStateToBind()
的调用者。 停止搜索其他可能产生非null答案的工厂。 如果工厂确定它是唯一预期的工厂,并且不应尝试其他工厂,则应仅抛出异常。 如果此工厂无法使用提供的参数创建对象,则应返回null。name
和nameCtx
参数可以选择用于指定正在创建的对象的名称。 有关详细信息,请参阅ObjectFactory.getObjectInstance()
中的“名称和上下文参数”描述。 如果工厂使用nameCtx
,则应根据并发访问同步其使用,因为上下文实现不能保证是线程安全的。name
、inAttrs
和environment
参数由调用者拥有。 实现不会修改这些对象或保留对它们的引用,尽管它可能保留对克隆或副本的引用。 此方法返回的对象由调用者拥有。 实现不会随后修改它。 它将包含一个新的同样由调用者拥有的Attributes
对象,或者对原始inAttrs
参数的引用。- 参数:
-
obj
- 可能为null的对象,其状态将被检索。 -
name
- 相对于nameCtx
的此对象的名称,如果未指定名称,则为null。 -
nameCtx
- 指定name
参数的上下文,如果name
相对于默认初始上下文,则为null。 -
environment
- 用于创建对象状态的可能为null的环境。 -
inAttrs
- 要与对象绑定的可能为null的属性。 工厂不得修改inAttrs
。 - 返回:
-
包含要绑定的对象的状态和相应要绑定的属性的
Result
;如果对象不使用此工厂,则为null。 - 抛出:
-
NamingException
- 如果此工厂在尝试获取对象状态时遇到异常,并且不应尝试其他工厂。 - 参见:
-