首页 > 解决方案 > Tomcat配置中的Jsession

问题描述

我发现我的jsessionidcookie 的价值是value.*tomcatid*- 例如jsessionid=ahvrbsbbdhdhwh.tc12

在哪里可以找到与jsessionid值连接的 Tomcat ID 的配置?

标签: apachetomcatsession-cookies

解决方案


您看到的后缀名为 the jvmRoute,并在 mod_jk 的workers.properties文件中配置为工作人员的名称

worker.tc12.type=AJP13
(etc)

或通过显式设置route 属性的名称:

worker.longname.type=AJP13
worker.longname.route=tc12
(etc)

在 Tomcat 中,jvmRoute设置在conf/server.xml元素<Engine>

<Engine name="Catalina" defaultHost="localhost" jvmRoute="tc12">

如果要更改路由名称,则需要调整 mod_jk 和 Tomcat 配置以相互匹配。

如果要删除此后缀,则必须在 mod_jk 中禁用粘性会话(粘性会话是默认配置)并删除以下jvmRoute属性conf/server.xml

workers.properties
------------------
worker.rc12.sticky_session = false

和:

conf/server.xml
---------------
<Engine name="Catalina" defaultHost="localhost">

这将禁用粘性会话,这意味着每个请求都将发送到任意 Tomcat 服务器。

即使您不需要粘性会话(例如,因为您正在使用集群 Tomcat、可迁移会话,或者您有无状态的 Web 服务),出于以下原因启用它们可能是个好主意:

  1. 保持默认值需要更少的配置
  2. 粘性会话可以减少集群会话复制延迟的问题(例如,您可以使用异步会话复制,因为用户请求几乎总是会转到同一个节点)

请注意,如果您的 Tomcat 节点没有在组件jvmRoute中定义任何内容,则会话永远不会粘滞。<Engine>因此,您可以通过删除文件jvmRoute1中的 s来有效地禁用会话粘性,conf/server.xml而无需进行其他重新配置。


推荐阅读