更改cookie JSESSIONID名称

ram*_*anr 53 java tomcat jsessionid

我需要在单个物理盒中运行多个tomcat服务器.从浏览器访问这些内容时,当用户在应用程序之间切换时,会导致用户先前登录访问应用程序.这是因为JSESSIONID cookie冲突.

一种可能的解决方案是在不同的上下文中运行每个应用 不幸的是,我的应用程序不能在上下文路径设置中工作,因为前面没有前面的request.getContextPath()访问任何资源.

这使我可以更改cookie JSESSIONID的名称来解决冲突.有没有办法做到这一点?如果有,怎么样?

希望我能说清楚我的问题.

注意:我的所有应用程序都在同一台机器的不同端口运行.

wal*_*alv 59

使用Servlet API 3.0,一切都变得简单得多.

现在您可以在web.xml中配置它:

<session-config>
    <cookie-config>
        <name>MY_JSESSIONID_YAHOOOOOO</name>
    </cookie-config>
</session-config>
Run Code Online (Sandbox Code Playgroud)

而已!

  • 最好的答案! (3认同)

Jos*_*ust 15

以下适用于我在context.xml文件中的Tomcat7:

<Context path="/yourApp" sessionCookieName="custom_session_id">
Run Code Online (Sandbox Code Playgroud)


小智 14

通过使用以下两个系统属性,可以轻松实现.

  • org.apache.catalina.SESSION_COOKIE_NAME
  • org.apache.catalina.SESSION_PARAMETER_NAME

可以将任何值传递给上述属性以更改默认值.

在这里找到一些示例脚本的完整细节.


小智 12

Tomcat 7将其从org.apache.catalina.SESSION_COOKIE_NAME移动到主<Context>配置上的属性. http://tomcat.apache.org/migration-7.html#Session_manager_configuration


Mar*_*tin 4

我认为目前不可能 - 请参阅https://issues.apache.org/bugzilla/show_bug.cgi?id=42419

最后一个条目指出“此问题已在 5.5.x 中修复,并将包含在 5.5.28 以后的版本中” - 这是下一个版本 - 5.5.27 是当前版本。