gpt4 book ai didi

java - ServletContextListener.contextDestroyed 中的 JNDI 查找

转载 作者:行者123 更新时间:2023-12-01 05:07:31 25 4
gpt4 key购买 nike

我正在使用 JBoss 7.1.1 和 servlet-api 2.5。

我必须在应用程序关闭时关闭位于 JNDI 中的一些对象。

我正在使用ServletContextListener为此目的:


public class MyServletContextListener implements ServletContextListener {
...

@Override
public void contextDestroyed(ServletContextEvent sce) {
((TaskClient) new InitialContext().lookup("myName")).disconnect();
}
}

但我得到了异常(exception):

Error looking up myName, service service jboss.naming.context.java.myName is not started

If I try to lookup the object when application is running everything is fine.

Thank you for any help.


update

How I bind data to jndi:


public class MyJbpmServletContextListener implements ServletContextListener {
public static final String TASK_CLIENT_JNDI_NAME = "myJbpmTaskClient";
private Log logger = SLF4JLogFactory.getLog(getClass());

@Override
public void contextInitialized(ServletContextEvent sce) {
try {
TaskClient tc = ...
// long initialization of TaskClient
InitialContext context = new InitialContext();
context.bind(TASK_CLIENT_JNDI_NAME, client);
} catch (NamingException exception) {
logger.error("Cannot bind task client", exception);
}
}

@Override
public void contextDestroyed(ServletContextEvent sce) {
try {
((TaskClient) new InitialContext().lookup(TASK_CLIENT_JNDI_NAME)).disconnect();
} catch (NamingException exception) {
logger.error("Cannot obtain task client", exception);
}
}
}

可通过以下路径访问该对象 TASK_CLIENT_JNDI_NAME当应用程序运行时。但是当 contextDestroyed叫我有NamingException .

我不知道它是如何以及何时被摧毁的。我只确定我没有重新绑定(bind)或取消绑定(bind)它。

<小时/>

更新2

我还尝试使用jndi路径java:comp/myName , java:comp/env/myName , java:/myName , java:jboss/myName 。行为是相同的:应用程序运行时可以查找对象,而 ServletContextListener.contextDestroyed 时则无法查找对象。调用的方法。

最佳答案

对我来说看起来像是一个 JBoss bug,我创建了 AS7-5746

关于java - ServletContextListener.contextDestroyed 中的 JNDI 查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12497538/

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