jsessionid用tomcat和web-logic作为后端服务器重写

时间:2015-01-17 03:07:33

标签: apache tomcat7 weblogic11g jsessionid

对于Web应用程序,我们依赖于部署在tomcat上部署的Web逻辑和Web应用程序上的CMS。当用户访问页面时,动态内容从tomcat(启用粘性会话)呈现,静态内容(js,css等)从CMS呈现(在Web逻辑上)。这导致JSESSIONID cookie发生冲突。 Web逻辑JSESSIONID覆盖了Tomcat JSESSIONID,当用户移动到站点的各个部分时,用户正在丢失会话中保存的内容。

请求流程如下

[1]:http://i.stack.imgur.com/17Ft5.png

作为创可贴,我们在负载均衡器上编写了一条规则,为所有来自CMS的响应删除JSESSIONID。

虽然它有效,但仍在寻找更好的方法来解决这个问题。

1 个答案:

答案 0 :(得分:0)

  1. 为什么您的CMS正在设置Cookie?是否需要会话来提供这些文件?

    通常静态文件不需要会话。应该允许它们缓存在代理和客户端上。

    正确配置您的CMS。如果它是一个Web应用程序,您可以添加一个过滤器,从其响应中删除Set-Cookie标头(就像您在LB上一样)。

  2. 可以更改会话cookie的名称。这可以使用遵循Servlet 3.0(或更高版本)规范的Web应用程序中的web.xml中的<session-config>/<cookie-config>/<name>元素进行配置。

    (它也可以在META-INF / context.xml中的Context元素上配置为sessionCookieName属性,但建议使用web.xml。

  3. 请注意,Cookie可以具有Path属性。如果Cookie的路径与请求的URL不匹配,则浏览器不会发送cookie。带路径的Cookie:/ web和Path:/ content可以愉快地共存在一起。

    Tomcat支持具有多个JSESSIONID cookie的请求。它只选择与现有会话匹配的那个。所有其他人都被忽略了。