Jboss 中的 Wicket 应用程序:会话过期太快

Wicket application in Jboss: session expires too quickly

我是 运行 一个托管在 Jboss EAP 6.2 服务器上的 Wicket 6.x 应用程序。

我的 web.xml 文件包含:

<session-config>
    <session-timeout>20</session-timeout>
</session-config>

这表明会话超时为 20 分钟。但是,实际超时要低得多。我没有确定确切的时间,但我可以告诉你,即使只过了 5 分钟,会话就已经过期了。当我刷新页面时,它会重新初始化并且所有状态都消失了。

我可以延长超时时间吗?它是如何控制的?

JBoss 6.x 应将默认的 http 会话超时设置为 30 分钟。 通常,正确设置 web.xml 应该覆盖默认值。

直接在 JBoss 服务器连接器上访问应用程序时,尝试测量会话超时。

https://hostname:8443/app_context_root 要么 http://hostname:8080/app_context_root

除非您自定义了端口,否则应该可以像上面那样访问。

如果您在 JBoss 之前有 Apache HTTPD 服务器并通过 Apache 代理访问它,它将关闭在 Apache HTTPD 中配置的会话。 这同样适用于任何 F5 负载均衡器,依此类推。

经过额外测试,发现问题出在 EJB 池的超时时间:

<pools>
     <bean-instance-pools>
         <strict-max-pool name="slsb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>
         <strict-max-pool name="mdb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>
     </bean-instance-pools>
</pools>

将值更改为 20 分钟解决了问题