gpt4 book ai didi

java - 为什么在 InitialContext 上调用 close() 会中断所有 future 查找的 JNDI (Glassfish)?

转载 作者:行者123 更新时间:2023-12-04 11:24:56 24 4
gpt4 key购买 nike

下面代码中的第二个 JNDI 查找在作为针对 Glassfish 的独立应用程序运行时失败并出现异常(已配置为公开 QueueConnectionFactoryDataSource JNDI)。但是,当 jndiContext.close() 行被删除时,代码工作正常。

在实际代码中,调用close()由 Spring 在 JndiObjectFactoryBean 中制作,所以我无法轻易删除它。

这是 Glassfish 中的错误,还是我做错了什么(例如配置错误或编码不正确)?

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);
}
}

最佳答案

您的 JNDI 实现可能只支持 InitialContext 对象的单个静态实现。您可以使用位于 sun 的文档确定如何找出 JNDI 上下文工厂的实际具体类型,然后找到详细说明关闭功能的实现文档。

关于java - 为什么在 InitialContext 上调用 close() 会中断所有 future 查找的 JNDI (Glassfish)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1345623/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com