Tomcat web.xml中单个会话配置元素中的多个跟踪模式元素?

Tomcat web.xml中单个会话配置元素中的多个跟踪模式元素?,tomcat,servlets,Tomcat,Servlets,我正在为我的web应用程序使用Tomcat8.0.35。本帖 表示我们可以在web.xml中的单个会话配置元素中使用多个跟踪模式元素 <web-app> <session-config> <tracking-mode>???</tracking-mode> </session-config> </web-app> ??? 我无法找到有关“多跟踪模式元素”的其他信息。如果我有以下情况,

我正在为我的web应用程序使用Tomcat8.0.35。本帖

表示我们可以在web.xml中的单个会话配置元素中使用多个跟踪模式元素

<web-app>
    <session-config>
        <tracking-mode>???</tracking-mode>
    </session-config>
 </web-app>

???
我无法找到有关“多跟踪模式元素”的其他信息。如果我有以下情况,Tomcat的行为会是什么

<web-app>
    <session-config>
        <tracking-mode>URL</tracking-mode>
        <tracking-mode>COOKIE</tracking-mode>
    </session-config>
 </web-app>

统一资源定位地址
曲奇

这个问题的答案可以在
org.apache.catalina.connector.CoyoteAdapter#postParseRequest

以下代码来自tomcat 8.5:

            String sessionID;
            if (request.getServletContext().getEffectiveSessionTrackingModes()
                    .contains(SessionTrackingMode.URL)) {

                // Get the session ID if there was one
                sessionID = request.getPathParameter(
                        SessionConfig.getSessionUriParamName(
                                request.getContext()));
                if (sessionID != null) {
                    request.setRequestedSessionId(sessionID);
                    request.setRequestedSessionURL(true);
                }
            }

            // Look for session ID in cookies and SSL session
            parseSessionCookiesId(request);
            parseSessionSslId(request);

            sessionID = request.getRequestedSessionId();
发生以下情况:

  • 如果允许tomcat使用URL会话trcking,它将尝试在URL请求中查找会话ID
  • 如果允许使用cookie跟踪,它将在cookie中查找会话id。无论请求中是否有会话id,它都优先
  • (不是您问题的一部分,但为了完整性)SSL会话跟踪在且仅当它是唯一允许的跟踪模式时才使用。否则它将被忽略
  • 我不知道为什么URL跟踪没有像SSL和Cookie跟踪模式那样在seprate方法中提取,但它们看起来几乎相同:

  • 检查该模式是否已启用
  • 尝试查找SessionId
  • 在请求对象中设置会话ID

  • Tomcat 7的
    跟踪模式
    功能已更换

    Context.disableURLRewriting:此项已删除。通过在web应用程序或全局CATALINA_BASE/conf/web.xml文件中配置会话配置/跟踪模式元素,可以获得等效的效果

    你可以

    Servlet3.0标准提供了两种禁用URL会话重写的方法。这适用于Tomcat7、GlassfishV3和任何其他兼容Servlet3.0的Servlet容器


    跟踪模式是servlet规范的一部分,因此它对所有servlet容器都有效,包括tomcat8@SvetlinZarev我删除了报价