public interface StateFactory
JNDI框架允许对象的实现是通过在动态加载对象工厂。例如,在查找打印机捆绑在名字空间,如果打印服务绑定的名字References打印机,打印机Reference可以用来创建一个打印机对象,以便查找呼叫者可以直接操作打印机对象后查找。
一个ObjectFactory负责创建特定类型的对象。在上面的例子中,你可能有一个PrinterObjectFactory创建Printer对象。
的逆过程,当一个对象被绑定到JNDI命名空间,提供国家的工厂。继续与打印机示例,假设打印机对象被更新和反弹:
为 ctx服务提供商使用状态厂获得 printer国家结合到它的命名空间。为 Printer类型对象状态的工厂可能会返回在命名系统更紧凑的对象存储。ctx.rebind("inky", printer);
一个国家的工厂必须实施StateFactory接口。此外,工厂类必须是公共的,必须有一个接受没有参数的公共构造函数。
一个国家的工厂getStateToBind()方法可以被调用多次,可能使用不同的参数。执行是线程安全的。
StateFactory是用于服务提供商,只实现Context接口。DirStateFactory是用于服务提供商,实现DirContext接口。
NamingManager.getStateToBind(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable<?, ?>)
,
DirectoryManager.getStateToBind(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable<?, ?>, javax.naming.directory.Attributes)
,
ObjectFactory
,
DirStateFactory
Object getStateToBind(Object obj, Name name, Context nameCtx, Hashtable<?,?> environment) throws NamingException
NamingManager.getStateToBind()先后负载在国营工厂和调用该方法,直到一个产生一个非零的答案。先后在国营工厂DirectoryManager.getStateToBind()载荷。如果一个工厂实行DirStateFactory,然后DirectoryManager调用DirStateFactory.getStateToBind();否则调用StateFactory.getStateToBind()。
当一个异常被抛出的一个工厂,唯一的例外是转嫁到NamingManager.getStateToBind()和DirectoryManager.getStateToBind()来电,可能产生一个非空的回答其他工厂停止搜索。工厂应该只抛出一个例外,如果它是肯定的,它是唯一的工厂,没有其他工厂应尝试。如果这个工厂不能使用提供的参数创建一个对象,则该对象将返回空值。
的name
和nameCtx
参数可用于指定创建的对象的名称。看到“名称和上下文参数”的细节在ObjectFactory.getObjectInstance()
描述。如果工厂使用nameCtx
应该同步与并发访问使用,因为语境的实现并不保证是线程安全的。
的name和environment参数是由调用方拥有。该实现将不会修改这些对象或保持引用它们,虽然它可能会保留对克隆或副本的引用。
obj
-非null对象的状态进行检索。
name
-此对象的名称相对
nameCtx
,或null,如果没有指定名称。
nameCtx
的上下文相关的
name
参数指定,或null如果
name
相对于默认初始上下文。
environment
-可用于对象的状态创造可能的空环境。
NamingException
-如果该厂在试图获取对象的状态时遇到了一个例外,并没有其他的工厂进行。
NamingManager.getStateToBind(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable<?, ?>)
,
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.