apache - Tomcat配置中的Jsession
问题描述
我发现我的jsessionid
cookie 的价值是value.*tomcatid*
- 例如jsessionid=ahvrbsbbdhdhwh.tc12
。
在哪里可以找到与jsessionid
值连接的 Tomcat ID 的配置?
解决方案
您看到的后缀名为 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 服务),出于以下原因启用它们可能是个好主意:
- 保持默认值需要更少的配置
- 粘性会话可以减少集群会话复制延迟的问题(例如,您可以使用异步会话复制,因为用户请求几乎总是会转到同一个节点)
请注意,如果您的 Tomcat 节点没有在组件jvmRoute
中定义任何内容,则会话永远不会粘滞。<Engine>
因此,您可以通过删除文件jvmRoute1
中的 s来有效地禁用会话粘性,conf/server.xml
而无需进行其他重新配置。
推荐阅读
- python - For 循环迭代似乎跳过了列表中的两个数字
- flutter - 如何修复制作空白的列并忽略我在颤动中的线性渐变
- docker - Docker:Java 运行时环境内存不足,无法继续
- django - 如何使用 PythonAnywhere SFTP 存储上传的文件以在 Django Filer 中超越文件大小限制?
- python - 有没有办法防止在 python 命令行上自动换行?
- angularjs - Docker:找不到本地咕噜声
- typescript - 错误 TS2339 TS 属性不存在。我正在做一些功课并遇到了这个问题。谁能回答为什么会发生这个错误?
- jenkins - 为什么失败的测试会导致整个 Jenkins 构建被 Allure 插件标记为“不稳定”?
- phpmyadmin - 使用 XAMPP 更改 root 密码后无法启动 MySQL
- php - 在 Laravel 5 应用程序中将 Redis 配置为缓存接口