public interface DirStateFactory extends StateFactory
JNDI框架允许对象的实现是通过加载动态object factories。
一个DirStateFactory延伸StateFactory通过允许Attributes实例被提供和被getStateToBind()方法返回。DirStateFactory实现打算通过DirContext服务提供商使用。当来电者结合使用DirContext.bind()对象,他也可能会指定一组属性被绑定的对象。要绑定的对象和属性传递给一个工厂的getStateToBind()方法。如果工厂处理对象和属性,它将返回一个相应的对象和属性绑定。如果工厂不处理对象,则必须返回空值。
例如,调用方可以将具有某些打印机相关属性的打印机对象绑定。
LDAP服务提供商 ctx使用 DirStateFactory(间接地通过 DirectoryManager.getStateToBind())给它 printer和 printerAttrs。一个LDAP目录的工厂可能会 printer为一组属性和合并, printerAttrs。服务提供商利用产生的属性来创建一个LDAP目录录入和更新。ctx.rebind("inky", printer, printerAttrs);
因为DirStateFactory StateFactory延伸,它有两getStateToBind()方法,其中一个不同于其他的属性参数。DirectoryManager.getStateToBind()将只使用接受属性参数的形式,而NamingManager.getStateToBind()只会使用不接受的属性参数的形式。
对dirstatefactory的getStateToBind()方法或形式可能被调用多次,可能使用不同的参数。执行是线程安全的。
Modifier and Type | Interface and Description |
---|---|
static class |
DirStateFactory.Result
一个对象/属性返回的结果对getstatetobind() dirstatefactory。
|
Modifier and Type | Method and Description |
---|---|
DirStateFactory.Result |
getStateToBind(Object obj, Name name, Context nameCtx, Hashtable<?,?> environment, Attributes inAttrs)
检索要转换的对象和属性的绑定对象的状态。
|
getStateToBind
DirStateFactory.Result getStateToBind(Object obj, Name name, Context nameCtx, Hashtable<?,?> environment, Attributes inAttrs) throws NamingException
先后在国营工厂DirectoryManager.getStateToBind()载荷。如果一个工厂实行DirStateFactory,DirectoryManager调用此方法;否则,它调用StateFactory.getStateToBind()。它这样做,直到一个工厂产生一个非空的答案。
当一个异常被抛出的一个工厂,唯一的例外是转嫁到DirectoryManager.getStateToBind()来电。寻找可能产生非零的答案的其他工厂被停止。工厂应该只抛出一个例外,如果它是肯定的,它是唯一的工厂,没有其他工厂应尝试。如果这个工厂不能使用提供的参数创建一个对象,则该对象将返回空值。
的name
和nameCtx
参数可用于指定创建的对象的名称。看到“名称和上下文参数”的细节在ObjectFactory.getObjectInstance()
描述。如果工厂使用nameCtx
应该同步与并发访问使用,因为语境的实现并不保证是线程安全的。
的name,inAttrs,和environment参数是由调用方拥有。该实现将不会修改这些对象或保持引用它们,虽然它可能会保留对克隆或副本的引用。由该方法返回的对象是调用方所拥有的。该实现将不会随后修改它。它将包含一个新的Attributes对象,同样是由调用方拥有,或参考原始inAttrs参数。
obj
-可能是null对象的状态进行检索。
name
-此对象的名称相对
nameCtx
,或null,如果没有指定名称。
nameCtx
的上下文相关的
name
参数指定,或null如果
name
相对于默认初始上下文。
environment
-可用于对象的状态创造可能的空环境。
inAttrs
-要绑定的对象可能的空属性。工厂不能修改
inAttrs。
NamingException
-如果该厂在试图获取对象的状态时遇到了一个例外,并没有其他的工厂进行。
DirectoryManager.getStateToBind(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable<?, ?>, javax.naming.directory.Attributes)
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.