Tomcat WebLogic';s<;会话参数>;配置元素实际上是什么?

Tomcat WebLogic';s<;会话参数>;配置元素实际上是什么?,tomcat,weblogic,sticky-session,Tomcat,Weblogic,Sticky Session,我们正在将一些遗留应用程序从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-a

我们正在将一些遗留应用程序从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>

...
库克名字
jsessionid
...
不知何故,包含此元素允许应用程序通过响应将cookie发送回浏览器,从而启用粘性会话,这正是我们试图实现的。应用程序servlet中没有任何代码可以对cookie执行任何操作来实现这一点。我应该提到,我们使用传统的外部负载平衡器来进行平衡,而不是任何容器选项

现在我们转到Tomcat,我们希望在不更改代码的情况下,通过类似的声明方式来维护相同的功能。然而,在Tomcat中似乎没有类似的描述符可以做到这一点

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

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

所以我想知道

  • 如果可能的话,如何在不编码的情况下在Tomcat中实现相同的功能 变化
  • 如果不可能,如何通过编码在Tomcat中实现同样的功能 变化。换句话说,WebLogic在幕后做什么 是否使用此部署描述选项

  • 我试着对此进行研究,但没有找到任何关于选项功能的信息,只有关于如何设置选项的信息,没有关于为什么要使用它的信息。请参见

    会话参数可帮助您自定义应用程序服务器在第一次调用时创建的会话对象

    HttpSession session=request.getSession(true)

    HttpSessions是由应用服务器通过唯一id标识的内存(大部分)缓存对象。id在被称为会话cookie的请求之间来回传输。对request.getSession()的后续请求将尝试从请求中检索cookie,读取id并检索相应的会话对象

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

    粘性会话和负载平衡与会话描述符中的cookie配置无关。您可以在weblogic集群中使用

  • 用于IIS的Weblogic插件,APache
  • 外部负载平衡器
  • Weblogic HttpClusterServlet(软件负载平衡器)
  • 一切都解释清楚了
    软件负载平衡器解释如下

    会话参数可帮助您自定义应用程序服务器在第一次调用时创建的会话对象

    HttpSession session=request.getSession(true)

    HttpSessions是由应用服务器通过唯一id标识的内存(大部分)缓存对象。id在被称为会话cookie的请求之间来回传输。对request.getSession()的后续请求将尝试从请求中检索cookie,读取id并检索相应的会话对象

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

    粘性会话和负载平衡与会话描述符中的cookie配置无关。您可以在weblogic集群中使用

  • 用于IIS的Weblogic插件,APache
  • 外部负载平衡器
  • Weblogic HttpClusterServlet(软件负载平衡器)
  • 一切都解释清楚了
    对软件负载平衡器进行了解释

    谢谢,但我不确定您是否已经了解了我的问题的实质。如果没有任何代码将cookie显式添加到响应中,那么在web逻辑上运行的servlet会在响应中显示cookie。这可以通过curl-c命令或wireshark之类的命令看到。这在Tomcat下是不会发生的,我仍然想了解为什么,以及如何实现这一点。你的问题是关于粘性会话,它只与集群应用程序相关。但是,如果您只是希望在默认情况下创建会话,Tomcat也会这样做。如上所述,request.getSession(true)将向应用程序返回会话对象。跟踪会话的会话cookie也将自动包含在响应中,所有进一步的请求都将在其标头中包含此会话cookie。您可以进一步调整tomcat的一些会话参数,如中所述。为了进一步澄清,所有j2ee web服务器都为应用程序提供自动会话处理功能。这包括创建会话、跟踪会话的cookie以及在响应和后续请求中包含此cookie。weblogic通过会话参数为您提供的是调整会话(和会话cookie)各种属性的能力。Tomcat使用会话管理器为您提供了一些相同的调整功能。也就是说,DefaultThank包含了基本会话处理功能,但我不确定您是否已经了解了我的问题的实质。如果没有任何代码将cookie显式添加到响应中,那么在web逻辑上运行的servlet会在响应中显示cookie。这可以通过curl-c命令或wireshark之类的命令看到。这在Tomcat下是不会发生的,我仍然想知道为什么,