我们正在将一些遗留应用程序从 WebLogic 移植到 Tomcat。在 Web Logic 中,这些应用程序的 weblogic.xml 部署描述符中有以下内容:
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 6.0//EN" "http://www.bea.com/servers/wls600/dtd/weblogic-web-jar.dtd">
<weblogic-web-app>
<session-descriptor>
...
<session-param>
<param-name>
CookieName
</param-name>
<param-value>
jsessionid
</param-value>
</session-param>
...
</session-descriptor>
</weblogic-web-app>
不知何故,包含此元素允许应用程序通过响应将 cookie 发送回浏览器,从而启用粘性会话,这正是我们试图实现的。应用程序 servlet 中没有任何代码可以对 cookie 进行任何操作来实现这一点。我应该提一下,我们使用传统的外部负载平衡器来进行平衡,而不是任何容器选项。
现在我们转移到 Tomcat,我们希望保持相同的功能,希望通过类似的声明方式,而不需要更改代码。但是,似乎没有类似的描述符可以在 Tomcat 中执行此操作。
当我们在两种环境中测试应用程序时,我们发现
curl -c cookie {url}
在 WebLogic 下的文件“cookie”中保存一个 cookie,但不在 Tomcat 下。
所以我想知道
- 如果可能的话,如何在不更改编码的情况下在 Tomcat 中实现相同的目标。
- 如果不可能,如何通过代码更改在 Tomcat 中实现相同的功能。换句话说,WebLogic 在这个部署描述选项的幕后做了什么?
我已经尝试对此进行研究,但没有找到任何关于该选项的作用的信息,只有关于如何设置该选项的信息,没有关于您可能想要使用它的原因的信息。请参阅WebLogic 文档