session - Tomcat/Java EE : Sessions cease unexpectedly

标签 session tomcat jsf-2 tomcat6

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

如果我们使 session 无效,我们可以控制每个地方,它们已被记录并且不是原因。

我们使用 session bean 进行身份验证,它实现了 HttpSessionBindingListener

我们记录 valueUnbound,可以看出注销是由 session 生命周期结束引起的。我们正在努力寻找原因。

配置了Tomcat 6.0.26,一切正常。对于负载较小的小客户,也会出现这种情况。

<session-timeout>

适当设置为 30 分钟。

    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>client</param-value>

不确定这有什么影响,但他们都使用客户端。

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

How could randomly my session is null?

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

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

在我们的应用程序中,出于调试原因,我试图终止 session 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);

似乎它没有被摧毁或重建。我也尝试在登录时删除浏览器中的 cookie,仍然没问题。

想知道一些关于如何进一步调试的具体提示吗?基本上现在我们所知道的是 valueUnbound 突然被调用了。

Tomcat 6.0.26

JSF 2.1.10

干杯

最佳答案

毕竟是过滤器之一,已经够尴尬了。我想这就是当每个人都假设其他人都检查过某些东西时会发生的事情

关于session - Tomcat/Java EE : Sessions cease unexpectedly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13123535/

相关文章:

apache - 我应该在我的 Linux 服务器空间中安装哪个版本的 Apache Tomcat?

jakarta-ee - 在 JSF2 项目中添加 jsf-facelets.jar

java - JSF 复合组件和 selectItems

PHP 和 MySQL session

php - 什么是 PHP session_start()

tomcat - 使用类加载器从 tomcat 库实例化 tomcat WEB-INF\class\myclass

maven - 带有 JSF 的 Spring Boot;找不到工厂 javax.faces.context.FacesContextFactory 的备份

java - 如何使用 cassandra session 进行多线程?

c# - ASP/C# session 变量 - 对象引用未设置为对象的实例

tomcat - CDI 注入(inject) Servlet 3.0 容器中的外部过滤器和 Servlet