我正在尝试编写应用程序的一部分,以便优雅地处理会话超时,但我似乎无法控制超时发生前的持续时间以进行测试。
我正在使用JBoss 5.1,我正在修改session-config我的web描述符(web.xml),以便会话在一分钟后超时(仅用于测试)
<session-config>
<session-timeout>1</session-timeout>
</session-config>
但是在通过登录创建会话后,它永远不会超时。没有我给它的设置会导致超时。
在tomcat环境中,我没有遇到过这个问题。有没有人遇到类似JBoss的问题?
答案 0 :(得分:17)
JBoss 5允许您在以下位置为所有应用程序定义会话超时:
deployers/jbossweb.deployer/web.xml
可能会覆盖 web.xml 中的设置。它不应该,但是,你知道......
检查更改是否有效。如果没有,您可以以编程方式为测试设置超时:
HttpSession.setMaxInactiveInterval(int seconds)
这样你可以在特定会话中强制超时。
答案 1 :(得分:6)
遗憾的是,在JBoss EAP 6.1.0.Alpha1(AS 7.2.0.Alpha1-redhat-4)中,我们又回到必须在web.xml中为每个Web应用程序设置它:See the JBoss docs。
用哪个说这个:
<session-config>
<session-timeout>30</session-timeout>
</session-config>
答案 2 :(得分:0)
对于某些设置,JBoss会覆盖您在web.xml中提供的设置。您需要在名为“ jboss-web.xml”的配置文件中指定相同的名称以应用此设置。您可以将此文件放在web.xml旁边的同一文件夹中。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<jboss-web>
<session-config>
<session-timeout>1</session-timeout>
</session-config>
</jboss-web>