-
- 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 classDirStateFactory.Result用于返回DirStateFactory.getStateToBind()的结果的对象/属性对。
-
方法摘要
所有方法 接口方法 抽象方法 Modifier and Type 方法 描述 DirStateFactory.ResultgetStateToBind(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是相对于默认的初始上下文,namenull。 -
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)
-
-