-
- All Superinterfaces:
-
StateFactory
public interface DirStateFactory extends StateFactory
该接口表示用于获取对象的状态的工厂和用于绑定的相应属性。JNDI框架允许通过
object factories
动态加载对象实现。甲
DirStateFactory
延伸StateFactory
通过使Attributes
实例要被提供给和由返回getStateToBind()
方法。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()
方法,其中一个不同于attribute参数。DirectoryManager.getStateToBind()
将仅使用接受attributes参数的表单,而NamingManager.getStateToBind()
将只使用不接受attributes参数的表单。可以多次调用DirStateFactory的
getStateToBind()
任一形式,可能使用不同的参数。 实现是线程安全的。
-
-
Nested Class Summary
Nested Classes Modifier and Type 接口 描述 static class
DirStateFactory.Result
用于返回DirStateFactory.getStateToBind()的结果的对象/属性对。
-
方法摘要
所有方法 接口方法 抽象方法 Modifier and Type 方法 描述 DirStateFactory.Result
getStateToBind(Object obj, Name name, Context nameCtx, Hashtable<?,?> environment, Attributes inAttrs)
在给定要转换的对象和属性的情况下,检索绑定对象的状态。-
Methods inherited from interface javax.naming.spi.StateFactory
getStateToBind
-
-
-
-
方法详细信息
-
getStateToBind
DirStateFactory.Result getStateToBind(Object obj, Name name, Context nameCtx, Hashtable<?,?> environment, Attributes inAttrs) throws NamingException
在给定要转换的对象和属性的情况下,检索绑定对象的状态。DirectoryManager.getStateToBind()
在国家工厂连续装载。 如果一个工厂实现DirStateFactory
,DirectoryManager
调用该方法; 否则,它调用StateFactory.getStateToBind()
。 这样做直到工厂产生非空答案。当工厂抛出异常时,异常传递给
DirectoryManager.getStateToBind()
的调用者。 搜索可能产生非空答案的其他工厂停止。 如果确定它是唯一的预定工厂,并且没有其他工厂应该被尝试,工厂应该只抛出异常。 如果此工厂无法使用提供的参数创建对象,则应返回null。可以可选地使用
name
和nameCtx
参数来指定正在创建的对象的名称。 有关详细信息,请参阅ObjectFactory.getObjectInstance()
中“名称和上下文参数”的说明。 如果一个工厂使用nameCtx
它应该将其使用与并发访问同步,因为上下文实现不能保证是线程安全的。该
name
,inAttrs
,并environment
参数由调用者所有。 尽管它可能会保留对克隆或副本的引用,但实现不会修改这些对象或保留对它们的引用。 该方法返回的对象由调用者拥有。 实施不会随后修改。 它将包含同样由调用者拥有的新的Attributes
对象,或引用原始的inAttrs
参数。- 参数
-
obj
- 要检索其状态的可能为空的对象。 -
name
- 此对象相对于nameCtx
的名称,如果未指定名称,则为null。 -
nameCtx
- 指定name
参数的上下文,如果name
是相对于默认的初始上下文,name
null。 -
environment
- 用于创建对象状态的可能的空环境。 -
inAttrs
- 与对象绑定的可能为空的属性。 工厂不得修改inAttrs
。 - 结果
-
A
Result
包含对象的绑定状态和要绑定的对应属性; 如果对象不使用此工厂,则为null。 - 异常
-
NamingException
- 如果此工厂在尝试获取对象的状态时遇到异常,并且不会尝试其他工厂。 - 另请参见:
-
DirectoryManager.getStateToBind(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable<?, ?>, javax.naming.directory.Attributes)
-
-