java - Tomcat 8.0.32 : sometimes it ignores cookies. 的奇怪行为是否可以以某种方式进行调试?

标签 java session tomcat cookies tomcat8

我们在 Ubuntu 16.x 下安装的 Tomcat 8.0.32 有一个非常奇怪的问题。

这个问题开始是偶然发生的,并且一直存在,直到tomcat服务器重新启动(因此它开始发生后可以重现)。

发生的情况是,定时器从 JS 应用程序发送的一些具有正确 cookie: JSESSIONID= 值的请求未得到正确处理:Tomcat 找不到 Session 对象对于它(从 Spring MVC 层来看,这意味着该用户未经身份验证)。在这个损坏的请求之前发送具有相同 JSESSIONID 的所有请求,以及在此之后发送的所有请求(再次使用相同的 session ID 值) - 它们都工作正常!

我们当然也看到该请求中的所有 header 都是正确的(它们由我们的应用程序在某些过滤器中打印出来),但 Session 对象未恢复。

所以基本上听起来在某些情况下 Tomcat 开始忽略通过从另一台服务器重定向发送的请求中的 JSESSIONID。再说一次,这种情况并不总是发生,只有在网络应用程序运行一段时间后才会发生。

我不会在这里提供任何代码或配置设置。首先,因为它看起来像是糟糕的 Tomcat 问题,其次,因为配置是标准的(apt-install 后开箱即用)。

我的问题是:我们如何配置 Tomcat 才能记录与 JSESSIONID 处理相关的所有操作?就像它会找到给定 ID 的 session ,或者找不到,等等。


UPD:对于较新版本的 Tomcat 8.5.5,这种情况永远不会发生。但由于某些原因,它无法在该特定服务器上更新。我当前的目标是收集有关此行为的证据,以确保它是一个错误,或者是 tomcat 安装的一些奇怪的默认配置。

最佳答案

根据文档https://tomcat.apache.org/tomcat-8.0-doc/logging.html 要为 Tomcat 内部的一部分启用调试日志记录,您应该配置适当的记录器和适当的处理程序以使用 FINEST 或 ALL 级别。例如:

org.apache.catalina.session.level=ALL
java.util.logging.ConsoleHandler.level=ALL

关于java - Tomcat 8.0.32 : sometimes it ignores cookies. 的奇怪行为是否可以以某种方式进行调试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46240868/

相关文章:

java - 使用 Java 读/写 Windows 注册表

PhpMyAdmin The session id is too long and Session object destruction failed 警告消息

java - 在 spring boot 中使用现有的 http 服务器作为 Camel 端点

java - 使用 apache camel 创建休息服务时出错

java - Play Framework 2.2-在主项目中使用子项目中的类

java TwitterAuthClient onActivityResult

java - 在 MyBatis 中列出 'IN' 子句

javascript - 使用sessionStore和webSockets,还需要cookie吗?

session - JSF Web 应用程序超时问题

tomcat - grails 是否需要在 tomcat 上运行应用程序?