gpt4 book ai didi

java - 我的 web.xml 中的监听器出了什么问题?

转载 作者:行者123 更新时间:2023-11-30 05:15:44 25 4
gpt4 key购买 nike

我们正在使用带有 portlet 的 JBoss 4.22。当监听器标记不在 web.xml 中时,portlet 会加载,但监听器 sessionDestroyed() 永远不会被调用(显然)。添加后,Portlet 不会加载,并且没有任何异常或日志消息。有什么我应该注意的问题吗?

   <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">


<!-- Listeners used by application -->
<listener>
<listener-class>listenerpackage.MyClassThatImplementsHttpSessionListener</listener-class>
</listener>
...Other tags...
</web-app>

在回复评论时,我一直在查看代码以查找问题点。我的监听器的构造函数确实有一些可能的问题。通常(不是作为监听器)一个实例将由相关 portlet(将监听器添加到 web.xml 时不会加载的实例)构造函数创建。我仍然可以期望这种情况吗?还是容器自己创建一个实例?

最佳答案

问题在于部署文档中声明的监听器会在加载该文档时实例化。我的类被设计为由 portlet 实例化,因此所需的信息不可用。

解决方案是使用 HttpSessionBindingListener并将该类作为属性添加到 session 中。然后当 session 失效时调用unbound()。 :)

关于java - 我的 web.xml 中的监听器出了什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1439743/

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