我们正在将一些遗留应用程序从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}
将Cookie保存在WebLogic下的“cookie”文件中,但不在Tomcat下。
所以我想知道
我已经尝试过对此进行研究,但没有找到有关该选项功能的任何信息,只提供了如何设置选项的信息,而没有关于您可能想要使用它的原因的信息。见WebLogic documentation
答案 0 :(得分:0)
session-param帮助您自定义第一次调用
时应用程序服务器创建的会话对象 HttpSession session = request.getSession(true);
HttpSessions在内存中(主要是)由应用程序服务器由唯一ID标识的缓存对象。 id在所谓的会话cookie之间在请求之间来回传输。对request.getSession()的后续请求将尝试从请求中检索cookie,读取id并检索相应的Session对象。
在此背景下,Session和Session cookie有几个参数,weblogic允许您通过weblogic.xml中的session-param标签进行参数化。例如cookie-name,cookie-domain,cookiemaxage等都在您的问题中提供的资源中记录。
粘性会话和负载平衡与会话描述符中的cookie配置无关。您可以使用
在weblogic集群中实现负载平衡