【发布时间】:2009-09-17 15:56:36
【问题描述】:
我们将 JBoss 4.22 与 portlet 一起使用。当监听器标记不在 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>
在回复 cmets 时,我一直在查看代码以查找问题点。我的 Listener 的构造函数确实有一些可能的问题。通常(不是作为侦听器)一个实例将由相关的 portlet(当侦听器添加到 web.xml 时未加载的那个)构造函数创建。我还能期望这种情况还是容器本身创建一个实例?
【问题讨论】:
-
原则上应该没问题。你的听众班有没有做过任何可能会产生连锁反应的俏皮话?
-
我不熟悉“敲击”效果。侦听器是一个委托并管理许多对象和连接。我们让它实现 HttpSessionListener 以便它可以清理对象和清理连接。
-
你的听众在做什么?它可能会以某种方式阻止整个网络应用程序吗?