gpt4 book ai didi

tomcat - WebLogic 的 配置元素实际上做了什么?

转载 作者:行者123 更新时间:2023-11-28 23:20:13 24 4
gpt4 key购买 nike

我们正在将一些遗留应用程序从 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 发送回浏览器,从而启用粘性 session ,这正是我们正在努力实现的目标。应用程序 servlet 中没有代码对 cookie 做任何事情来实现这一点。我应该提一下,我们正在使用传统的外部负载平衡器来进行平衡,而不是任何容器选项。

现在我们转移到 Tomcat,我们希望保持相同的功能,希望通过类似的声明方式,而不更改代码。但是,似乎没有类似的描述符可以在 Tomcat 中执行此操作。

当我们在两种环境中测试应用程序时,我们发现

curl -c cookie {url} 将 cookie 保存在 WebLogic 下的“cookie”文件中,但不在 Tomcat 下。

所以我想知道

  1. 如果可能的话,如何在 Tomcat 中实现相同的功能,而无需编码变化。
  2. 如果不可能,如何通过编码在 Tomcat 中实现同样的功能变化。换句话说,WebLogic 在幕后做什么使用此部署描述选项?

我已尝试对此进行研究,但未找到有关该选项功能的任何信息,仅提供有关如何设置该选项的信息,而没有有关您可能想要使用它的原因的信息。参见 WebLogic documentation

最佳答案

session-param 帮助您自定义应用程序服务器在第一次调用时创建的 session 对象

HttpSession session = request.getSession(true);

HttpSession 是内存中(大部分)缓存的对象,由应用程序服务器通过唯一 ID 标识。 ID 在所谓的 session cookie 中在请求之间来回传输。对 request.getSession() 的后续请求将尝试从请求中检索 cookie,读取 id 并检索相应的 Session 对象。

在这种背景下,Weblogic 允许您通过 weblogic.xml 中的 session-param 标记对 Session 和 Session cookie 的几个参数进行参数化。示例是 cookie 名称、cookie 域、cookiemaxage 等,所有这些都记录在您的问题中提供的资源中。

粘性 session 和负载均衡与 session 描述符中的 cookie 配置无关。您可以使用

在 weblogic 集群中实现负载平衡
  1. 用于 IIS、APache 的 Weblogic 插件
  2. 外部负载均衡器
  3. Weblogic HttpClusterServlet(软件负载平衡器)

全部解释 here软件负载平衡器说明here

关于tomcat - WebLogic 的 <session-param> 配置元素实际上做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44814184/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com