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

标签 java jboss portlet

我们正在使用带有 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/

相关文章:

java - 如何从 LIferay/IceFaces/JSF portlet 支持 bean 中获取 url 请求参数

java - 无法使用搜索工具在 liferay portlet 中搜索期刊文章

css - 如何在 Liferay 的 Vaadin portlet 中管理样式

java.net.SocketException : Network is unreachable: connect Response data in JMeter

java - 画好的形状停止后一直在振动

java - JBoss EAP 6.2 JMX 服务器和注册表绑定(bind)

java - 检索 JBoss 上的数据源统计信息

java - 为不同环境定义 Spring bean 时的常用策略

java - 使用 IPv4 的套接字通信

java - 在 Java EE 5 (JBoss) 平台上启动计划任务的正确方法是什么?