Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HttpSession和JBoss。会话超时的影响是什么?_Java_Servlets_Httpsession - Fatal编程技术网

Java HttpSession和JBoss。会话超时的影响是什么?

Java HttpSession和JBoss。会话超时的影响是什么?,java,servlets,httpsession,Java,Servlets,Httpsession,我继承的一些代码使用以下行创建会话: HttpSession session = req.getSession(); //req is an instance of HTTPServletRequest 在应用程序的配置中,会话配置的值设置为10(分钟) 在此之后,会话的唯一用途是获取会话id: String sid = req.getSession().getId(); 并宣布其无效: req.getSession().invalidate() 会话不用于存储用户数据。这一切都是通过数

我继承的一些代码使用以下行创建会话:

HttpSession session = req.getSession(); //req is an instance of HTTPServletRequest
在应用程序的配置中,会话配置的值设置为10(分钟)

在此之后,会话的唯一用途是获取会话id:

String sid = req.getSession().getId();
并宣布其无效:

  • req.getSession().invalidate()
会话不用于存储用户数据。这一切都是通过数据库表中的Perl脚本完成的,只需使用HttpSession创建的sid作为标识符。(有点像应用程序的怪物)

所以。我的问题是给定了超时设置,我预计会出现故障。至少这一行:

字符串sid=req.getSession().getId()

会在10分钟后返回空字符串吗

然而,尽管设置了10分钟的超时时间,这一切似乎都很愉快地继续着。为什么会这样

谢谢


--Justin Wyllie

如果会话因超时或代码而无效,当您执行
请求.getSession()
时,您正在创建一个新会话。您可以通过比较两个ID的值来检查这一点

如果不希望
getSession()
方法在没有创建会话的情况下创建新会话,可以将
false
作为参数传递给它

如果您希望“某些东西失败”,您可以尝试向会话添加一个值(使用
setAttribute()
方法),并在无效后检查它是否存在

返回与此请求关联的当前HttpSession,或者,如果没有当前会话且create为true,则返回新会话


仔细查看定义的第一部分,我猜与“this”请求对象关联的会话对象仍然不是空的。即使是这样,它也会返回一个新的“对象”,当然它是“非空的”。

@Justin Wyllie:try with
HttpSession session=req.getSession(false)

尽管会话配置设置被设置为10分钟,但如果我调用它,情况是:sid=req.getSession().getId();在0分钟和30分钟时,我仍然得到相同的sid值。所以会话尚未过期?谢谢
req.getSession()