下面代码中的第二个jndi查找在作为一个独立的应用程序对glassfish(已配置为公开
QueueConnectionFactory
和A
DataSource
通过JNDI)。但是,当
jndiContext.close()
被移除。
在真正的代码中,调用
close()
是春天做的
JndiObjectFactoryBean
所以我不能轻易地删除它。
这是glassfish中的一个bug,还是我做错了什么(例如,配置错误或编码错误)?
import javax.naming.Context;
import javax.naming.InitialContext;
public class TestInitCtx {
private final static String QUEUE_CONNECTION_FACTORY_JNDI_NAME = "QCF";
private final static String DATA_SOURCE_JNDI_NAME = "DS";
public static void main(String[] args) throws Exception {
Context jndiContext = new InitialContext();
jndiContext.lookup(QUEUE_CONNECTION_FACTORY_JNDI_NAME);
// In Glassfish, this line causes the second lookup
// to throw a com.sun.enterprise.connectors.ConnectorRuntimeException
// (wrapping a NullPointerException)
jndiContext.close();
jndiContext = new InitialContext();
jndiContext.lookup(DATA_SOURCE_JNDI_NAME);
}
}