-
- 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
提供printer
和printerAttrs
。 LDAP目录的工厂可能会将printer
变为一组属性,并将其与printerAttrs
合并。 然后,服务提供程序使用结果属性创建LDAP条目并更新目录。由于
DirStateFactory
扩展为StateFactory
,因此它有两个getStateToBind()
方法,其中一个方法与attributes参数不同。DirectoryManager.getStateToBind()
将仅使用接受attributes参数的表单,而NamingManager.getStateToBind()
将仅使用不接受attributes参数的表单。可以使用不同的参数多次调用DirStateFactory的
getStateToBind()
方法的任一形式。 该实现是线程安全的。
-
-
嵌套类汇总
嵌套类 变量和类型 接口 描述 static class
DirStateFactory.Result
用于返回DirStateFactory.getStateToBind()结果的对象/属性对。
-
方法摘要
所有方法 实例方法 抽象方法 变量和类型 方法 描述 DirStateFactory.Result
getStateToBind(Object obj, Name name, Context nameCtx, Hashtable<?,?> environment, Attributes inAttrs)
在给定要转换的对象和属性的情况下,检索要绑定的对象的状态。-
声明方法的接口 javax.naming.spi.StateFactory
getStateToBind
-
-
-
-
方法详细信息
-
getStateToBind
DirStateFactory.Result getStateToBind(Object obj, Name name, Context nameCtx, Hashtable<?,?> environment, Attributes inAttrs) throws NamingException
在给定要转换的对象和属性的情况下,检索要绑定的对象的状态。DirectoryManager.getStateToBind()
先后在州工厂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
- 用于创建对象状态的可能为null的环境。 -
inAttrs
- 要与对象绑定的可能为null的属性。 工厂不得修改inAttrs
。 - 结果
-
Result
包含绑定对象的状态和要绑定的相应属性; 如果对象不使用此工厂,则返回null。 - 异常
-
NamingException
- 如果此工厂在尝试获取对象的状态时遇到异常,并且不尝试其他工厂。 - 另请参见:
-
DirectoryManager.getStateToBind(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable<?, ?>, javax.naming.directory.Attributes)
-
-