Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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
Session Tomcat/JavaEE:会话意外停止_Session_Tomcat_Jsf 2_Tomcat6 - Fatal编程技术网

Session Tomcat/JavaEE:会话意外停止

Session Tomcat/JavaEE:会话意外停止,session,tomcat,jsf-2,tomcat6,Session,Tomcat,Jsf 2,Tomcat6,我们遇到突然注销的问题。它附带了一个版本切换,以前的应用程序运行JSF1.2,而这个应用程序运行JSF2.1。由于这是一次主要的重构,因此无法跟踪任何特定的代码更改。但是对代码进行了重大更新(尽管主要是视图而不是bean) 我们可以控制每一个地方,如果我们使会话无效,它们会被记录下来,而不是原因 我们使用会话bean进行身份验证,它实现了httpsessionbindingstener 我们记录valueUnbound,并可以判断注销是由会话生命周期结束引起的。我们正在努力寻找原因 Tomcat

我们遇到突然注销的问题。它附带了一个版本切换,以前的应用程序运行JSF1.2,而这个应用程序运行JSF2.1。由于这是一次主要的重构,因此无法跟踪任何特定的代码更改。但是对代码进行了重大更新(尽管主要是视图而不是bean)

我们可以控制每一个地方,如果我们使会话无效,它们会被记录下来,而不是原因

我们使用会话bean进行身份验证,它实现了
httpsessionbindingstener

我们记录valueUnbound,并可以判断注销是由会话生命周期结束引起的。我们正在努力寻找原因

Tomcat 6.0.26已经过评测,一切似乎都很正常。这也适用于负载较小的小客户

<session-timeout>

已适当设置为30分钟

    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>client</param-value>
javax.faces.STATE\u保存方法
客户
不确定这是否有任何影响,但他们都使用客户端

我们试图绕过负载平衡,但问题仍然存在

我们尝试了建议的标志,emptySessionPath,但没有帮助

此外,我们不确定如何按照建议继续记录请求头

在我们的应用程序中,由于调试原因,我尝试终止会话cookie:

HttpServletResponse response = (HttpServletResponse) getFacesContext().getExternalContext().getResponse();
Map<String, Object> cookies = getFacesContext().getExternalContext().getRequestCookieMap();
Cookie cookie = (Cookie) cookies.get("JSESSIONID");
cookie.setValue("");
cookie.setPath("/");
cookie.setMaxAge(0);
response.addCookie(cookie);
HttpServletResponse=(HttpServletResponse)getFacesContext().getExternalContext().getResponse();
映射cookies=getFacesContext().getExternalContext().getRequestCookieMap();
Cookie Cookie=(Cookie)cookies.get(“JSESSIONID”);
cookie.setValue(“”);
cookie.setPath(“/”);
cookie.setMaxAge(0);
addCookie(cookie);
看起来它不是被摧毁就是被重建了。我还尝试在登录时删除浏览器中的cookies,但仍然没有问题

如果您能提供一些关于如何进一步调试的具体提示,我们将不胜感激?基本上,现在我们所知道的是valueUnbound,它突然被称为

Tomcat 6.0.26

JSF2.1.10


干杯毕竟是一个令人尴尬的过滤器。我想这就是当每个人都假设其他人都检查了某个东西时可能发生的情况

会话超时是否有某种模式?它们是在一段时间后发生的还是随机发生的?还有,这是发生在所有客户身上还是只发生在一些客户身上?因为对于未启用Cookie的客户端,会话处理将失败,并且您没有进行任何URL重写。您是否也在使用tomcat将会话持久化到持久化存储?检查tomcat日志是否存在持久性故障异常完全随机。有时在3小时后,有时在3次单击后。许多不同的用户,甚至不同的操作系统和浏览器。URL重写-无。Tomcat日志已经被仔细研究过了,我甚至不认为我们会坚持下去。这只是一个实验。您能否实现JSF
PhaseListener
HttpSessionListener
并在两者中收集足够的环境统计数据,其目标是您可以确定web应用程序请求处理生命周期与会话创建和销毁之间的某种模式。