<?xml version="1.0" encoding="UTF-8"?>
<web-app metadata-complete="true" version="3.0"
 xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
 <display-name>WebWAR</display-name>
 <context-param>
  <param-name>ac</param-name>
  <param-value>3</param-value>
 </context-param>
 <context-param>
  <param-name>ag</param-name>
  <param-value>3</param-value>
 </context-param>
 <context-param>
  <param-name>ap</param-name>
  <param-value>3</param-value>
 </context-param>
 <context-param>
  <param-name>contextClass</param-name>
  <param-value>com.appiancorp.common.spring.SelectiveOrderedXmlWebApplicationContext</param-value>
 </context-param>
 <context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>/WEB-INF/conf/**/spring-*.xml</param-value>
 </context-param>
  <context-param>
    <param-name>contextInitializerClasses</param-name>
    <param-value>com.appiancorp.common.spring.ApplicationContextBeanFactoryInitializer</param-value>
  </context-param>
 <!-- Installer:Start Process Context -->
 <context-param>
  <param-name>driver-config</param-name>
  <param-value>WEB-INF/conf/process/rdbms/driver-config.xml</param-value>
 </context-param>
 <context-param>
  <param-name>file</param-name>
  <param-value>WEB-INF/config.xml,WEB-INF/conf/config-*.xml</param-value>
 </context-param>
 <!-- Installer:End Process Context -->
 <filter>
  <filter-name>sessionFailoverFilter</filter-name>
  <filter-class>com.appiancorp.security.web.SessionFailoverFilter</filter-class>
 </filter>
 <filter>
  <filter-name>domainFilter</filter-name>
  <filter-class>com.appiancorp.security.web.DomainFilter</filter-class>
 </filter>
 <filter>
  <filter-name>userAgentFilter</filter-name>
  <filter-class>com.appiancorp.common.web.UserAgentFilter</filter-class>
 </filter>
 <filter>
  <filter-name>mobileAuthContextFilter</filter-name>
  <filter-class>com.appiancorp.security.auth.mobile.MobileAuthContextFilter</filter-class>
 </filter>
 <filter>
  <filter-name>mobileLandingPageFilter</filter-name>
  <filter-class>com.appiancorp.ap2.MobileLandingPageFilter</filter-class>
 </filter>
 <filter>
  <filter-name>authProviderFilter</filter-name>
  <filter-class>com.appiancorp.security.auth.AuthProviderFilter</filter-class>
 </filter>
 <filter>
  <filter-name>maintWindowHeaderFilter</filter-name>
  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
 </filter>
 <filter>
  <filter-name>emailRenderingAuthFilter</filter-name>
  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
 </filter>
 <filter>
  <filter-name>authenticationLoggingFilter</filter-name>
  <filter-class>com.appiancorp.security.auth.logging.AuthenticationLoggingFilter</filter-class>
 </filter>
 <filter>
  <filter-name>corsFilter</filter-name>
  <filter-class>com.appiancorp.security.cors.CorsFilter</filter-class>
 </filter>
 <filter>
  <filter-name>encodingFilter</filter-name>
  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
  <init-param>
   <param-name>encoding</param-name>
   <param-value>UTF-8</param-value>
  </init-param>
 </filter>
 <filter>
  <filter-name>httpMethodOverrideFilter</filter-name>
  <filter-class>com.appiancorp.common.web.HttpMethodOverrideFilter</filter-class>
 </filter>
 <filter>
  <filter-name>nullByte</filter-name>
  <filter-class>com.appiancorp.ap2.NullByteInjectionFilter</filter-class>
 </filter>
 <filter>
  <filter-name>ClassParamFilter</filter-name>
  <filter-class>com.appiancorp.security.appianwebmvc.ClassParamFilter</filter-class>
  <init-param>
    <param-name>excludeParams</param-name>
    <param-value>(.*\.|^|.*|\[('|"))(c|C)lass(\.|('|")]|\[).*</param-value>
  </init-param>
 </filter>
 <filter>
  <filter-name>environment</filter-name>
  <filter-class>com.appiancorp.ap2.environment.EnvironmentFilter</filter-class>
 </filter>
 <filter>
  <filter-name>wrap</filter-name>
  <filter-class>com.appiancorp.ap2.WrapFilter</filter-class>
  <init-param>
   <param-name>exclude-url-patterns</param-name>
   <param-value>/**/process_modeler_node_recommendation.weights,/**/process_modeler_node_recommendation.json,/api/**,/saml/**,/webapi/**,/oauth/**,/oidc/callback/**,/oauth/authorize/**,/piee/callback/**,/authorization/oauth/**,/clientapi/**,/portals/clientapi/**,/devops-infrastructure/**,/healthz,/self-test,/self-test/**,/internal/webapi/**,/rest/**,/s/**,/plugins/servlet/stateless/**,/**/*.gif,/**/*.png,/**/*.jpg,/**/*.jpeg,/**/*.ico,/**/*.eot,/**/*.woff,/**/*.woff2,/**/*.ttf,/**/*.svg,/**/*.htc,/rpa/**,/deployment-management/**,/connected-system-management/**, /cloud-database-management/**</param-value>
  </init-param>
 </filter>
 <filter>
  <filter-name>appianSecurityHeadersFilter</filter-name>
  <filter-class>com.appiancorp.security.headers.AppianSecurityHeadersFilter</filter-class>
 </filter>
  <filter>
  <filter-name>frameOptionsFilter</filter-name>
  <filter-class>com.appiancorp.security.web.FrameOptionsFilter</filter-class>
 </filter>
  <filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
  </filter>
 <filter>
  <filter-name>sessionJvmRouteModificationFilter</filter-name>
  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
 </filter>
 <filter>
  <filter-name>cspFilter</filter-name>
  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
  <init-param>
   <param-name>targetFilterLifecycle</param-name>
   <param-value>true</param-value>
  </init-param>
  <init-param>
   <param-name>configPath</param-name>
   <param-value>/WEB-INF/conf/security/csp/CspConfiguration.json</param-value>
  </init-param>
  <init-param>
   <param-name>dynamicConfigPath</param-name>
   <param-value>/WEB-INF/conf/security/csp/DynamicCspConfiguration.json</param-value>
  </init-param>
  <init-param>
   <param-name>staticConfigPath</param-name>
   <param-value>/WEB-INF/conf/security/csp/StaticCspConfiguration.json</param-value>
  </init-param>
 </filter>
 <filter>
  <filter-name>xssFilter</filter-name>
  <filter-class>com.appiancorp.security.xss.XssFilter</filter-class>
 </filter>
  <filter>
    <filter-name>authenticationStatusHeaderFilter</filter-name>
    <filter-class>com.appiancorp.security.auth.AuthenticationStatusHeaderFilter</filter-class>
  </filter>
 <filter>
  <filter-name>tracingUserUuidFilter</filter-name>
  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
 </filter>
  <filter>
  <filter-name>UrlRewriteFilter</filter-name>
  <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
 </filter>
 <filter>
  <filter-name>WhitelistPortal</filter-name>
  <filter-class>com.appiancorp.security.web.AppsPortalVisibilityFilter</filter-class>
  <init-param>
   <param-name>allowedUrlsPath</param-name>
   <param-value>/WEB-INF/conf/security/uri/portal-allowedUrls.txt</param-value>
  </init-param>
  <init-param>
   <param-name>designerAllowedUrlsPath</param-name>
   <param-value>/WEB-INF/conf/security/uri/portal-designerAllowedUrls.txt</param-value>
  </init-param>
 </filter>
 <filter>
  <filter-name>WhitelistUrlRewriteFilter</filter-name>
  <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
    <init-param>
      <param-name>confPath</param-name>
      <param-value>/WEB-INF/conf/security/uri/whitelist-urlrewrite.xml</param-value>
    </init-param>
 </filter>
 <filter>
  <filter-name>background</filter-name>
  <filter-class>com.appiancorp.asi.components.common.BackgroundFilter</filter-class>
 </filter>
 <filter>
  <filter-name>sitemesh</filter-name>
  <filter-class>com.appiancorp.ap2.PageFilter</filter-class>
 </filter>
 <filter>
  <filter-name>contentFilter</filter-name>
  <filter-class>com.appiancorp.ap2.ContentFilter</filter-class>
 </filter>
 <filter>
  <filter-name>mfaVerificationCodeFilter</filter-name>
  <filter-class>com.appiancorp.security.auth.mfa.MfaVerificationCodeFilter</filter-class>
 </filter>
 <filter>
  <filter-name>forceSetPasswordFilter</filter-name>
  <filter-class>com.appiancorp.security.auth.ForceSetPasswordFilter</filter-class>
 </filter>
 <filter>
  <filter-name>ssoRedirectFilter</filter-name>
  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
 </filter>
 <filter>
  <filter-name>signInLinksRedirectFilter</filter-name>
  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
 </filter>
 <filter>
  <filter-name>filter-plugin-dispatcher-before-dispatch-request</filter-name>
  <filter-class>com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter</filter-class>
  <init-param>
   <param-name>location</param-name>
   <param-value>before-dispatch</param-value>
  </init-param>
  <init-param>
   <param-name>dispatcher</param-name>
   <param-value>REQUEST</param-value>
  </init-param>
 </filter>
 <filter>
  <filter-name>filter-plugin-dispatcher-before-dispatch-forward</filter-name>
  <filter-class>com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter</filter-class>
  <init-param>
   <param-name>location</param-name>
   <param-value>before-dispatch</param-value>
  </init-param>
  <init-param>
   <param-name>dispatcher</param-name>
   <param-value>FORWARD</param-value>
  </init-param>
 </filter>
 <filter>
  <filter-name>filter-plugin-dispatcher-before-dispatch-include</filter-name>
  <filter-class>com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter</filter-class>
  <init-param>
   <param-name>location</param-name>
   <param-value>before-dispatch</param-value>
  </init-param>
  <init-param>
   <param-name>dispatcher</param-name>
   <param-value>INCLUDE</param-value>
  </init-param>
 </filter>
 <filter>
  <filter-name>filter-plugin-dispatcher-before-dispatch-error</filter-name>
  <filter-class>com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter</filter-class>
  <init-param>
   <param-name>location</param-name>
   <param-value>before-dispatch</param-value>
  </init-param>
  <init-param>
   <param-name>dispatcher</param-name>
   <param-value>ERROR</param-value>
  </init-param>
 </filter>
 <filter>
  <filter-name>nav</filter-name>
  <filter-class>com.appiancorp.ap2.NavigationFilter</filter-class>
 </filter>
 <filter>
  <filter-name>entry</filter-name>
  <filter-class>com.appiancorp.ap2.EntryFilter</filter-class>
 </filter>
 <filter>
  <filter-name>compress</filter-name>
  <filter-class>com.appiancorp.ap2.CompressionFilter</filter-class>
 </filter>
 <filter>
  <filter-name>rest-timer</filter-name>
  <filter-class>com.appiancorp.tempo.util.PerformanceLogFilter</filter-class>
 </filter>
 <filter>
  <filter-name>local-request</filter-name>
  <filter-class>com.appiancorp.common.web.ThreadLocalRequestFilter</filter-class>
 </filter>
 <filter>
  <filter-name>feed-gzip</filter-name>
  <filter-class>com.appiancorp.tempo.util.CompressionFilter</filter-class>
 </filter>
 <filter>
  <filter-name>listingsServletFilter</filter-name>
  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
 </filter>
 <filter>
  <filter-name>JsonRpcFilter</filter-name>
  <filter-class>com.appiancorp.security.jsonrpc.JsonRpcFilter</filter-class>
 </filter>
 <filter>
  <filter-name>httpStrictTransportSecurityFilter</filter-name>
  <filter-class>com.appiancorp.common.web.HttpStrictTransportSecurityFilter</filter-class>
 </filter>
 <filter>
  <filter-name>gifImageFilter</filter-name>
  <filter-class>com.appiancorp.common.web.GifImageFilter</filter-class>
 </filter>
 <filter>
  <filter-name>deployment-management-servlet-filter</filter-name>
  <filter-class>com.appiancorp.designdeploymentsapi.DeploymentManagementServletFilter</filter-class>
 </filter>
 <filter>
  <filter-name>httpResponseMetricsFilter</filter-name>
  <filter-class>com.appiancorp.monitoring.prometheus.HttpResponseMetricsFilter</filter-class>
 </filter>
 <filter>
  <filter-name>appianTracingFilter</filter-name>
  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
 </filter>
 <filter>
  <filter-name>webApiLogbookFilter</filter-name>
  <filter-class>com.appiancorp.webapi.logging.WebApiLogbookFilter</filter-class>
 </filter>
 <filter>
  <filter-name>webAssetMonitorFilter</filter-name>
  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
 </filter>
 <filter>
  <filter-name>portalSymmetricKeyRequestLogFilter</filter-name>
  <filter-class>com.appiancorp.portals.loggingFilter.PortalSymmetricKeyLogFilter</filter-class>
 </filter>
 <filter>
  <!-- this filter should always be last, it simply measures -->
  <filter-name>measureStartupRequestFilter</filter-name>
  <filter-class>com.appiancorp.common.web.MeasureStartupRequestFilter</filter-class>
 </filter>

 <filter-mapping>
  <filter-name>appianTracingFilter</filter-name>
  <url-pattern>/rest/a/*</url-pattern>
  <url-pattern>/webapi/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>httpResponseMetricsFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>httpStrictTransportSecurityFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>encodingFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>nullByte</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>sessionFailoverFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>ClassParamFilter</filter-name>
  <url-pattern>*.bg</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>ClassParamFilter</filter-name>
  <url-pattern>*.none</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>ClassParamFilter</filter-name>
  <url-pattern>*.frameset</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>ClassParamFilter</filter-name>
  <url-pattern>*.admin</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>ClassParamFilter</filter-name>
  <url-pattern>*.popup</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>ClassParamFilter</filter-name>
  <url-pattern>*.layer</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>ClassParamFilter</filter-name>
  <url-pattern>*.do</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>ClassParamFilter</filter-name>
  <url-pattern>/process/forms/internal/task.pdf</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>ClassParamFilter</filter-name>
  <url-pattern>/process/forms/internal/process.pdf</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>ClassParamFilter</filter-name>
  <url-pattern>*.preview</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>ClassParamFilter</filter-name>
  <url-pattern>*.print</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>ClassParamFilter</filter-name>
  <url-pattern>*.simplepopup</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>compress</filter-name>
  <url-pattern>/portal/js/constants.jsp</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>portalSymmetricKeyRequestLogFilter</filter-name>
  <url-pattern>/rest/a/portal-keys/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>local-request</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>environment</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>domainFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>userAgentFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>authProviderFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>mobileAuthContextFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>mobileLandingPageFilter</filter-name>
  <url-pattern>/tempo/*</url-pattern>
  <url-pattern>/sites/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>authenticationLoggingFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>maintWindowHeaderFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>emailRenderingAuthFilter</filter-name>
  <url-pattern>/ntf/emailHtml/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>emailRenderingAuthFilter</filter-name>
  <url-pattern>/ntf/modernEmailHtml/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>corsFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>httpMethodOverrideFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>appianSecurityHeadersFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <!-- AN-192830: frameOptionsFilter must occur before the springSecurityFilterChain so that unauthenticated
        requests will contain the X_FRAME_OPTIONS header in the response -->
 <filter-mapping>
  <filter-name>frameOptionsFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>

 <filter-mapping>
  <filter-name>cspFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <!-- AN-156952: only authenticated requests will make it past this filter -->
 <filter-mapping>
  <filter-name>springSecurityFilterChain</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>sessionJvmRouteModificationFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>xssFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>authenticationStatusHeaderFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>tracingUserUuidFilter</filter-name>
  <url-pattern>/rest/a/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>mfaVerificationCodeFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>forceSetPasswordFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>ssoRedirectFilter</filter-name>
  <url-pattern>/admin/page/oidc/</url-pattern>
  <url-pattern>/admin/page/oidc</url-pattern>
  <url-pattern>/admin/page/saml/</url-pattern>
  <url-pattern>/admin/page/saml</url-pattern>
  <url-pattern>/admin/page/piee/</url-pattern>
  <url-pattern>/admin/page/piee</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>signInLinksRedirectFilter</filter-name>
  <url-pattern>/admin/page/signin-page-links/</url-pattern>
  <url-pattern>/admin/page/signin-page-links</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>webApiLogbookFilter</filter-name>
  <url-pattern>/webapi/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>wrap</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>gifImageFilter</filter-name>
  <url-pattern>*.gif</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>gifImageFilter</filter-name>
  <url-pattern>*.svg</url-pattern>
 </filter-mapping>
 <!-- AN-46073: rest-timer and feed-gzip filters are applied before UrlRewriteFilter -->
 <filter-mapping>
  <filter-name>rest-timer</filter-name>
  <url-pattern>/api/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>rest-timer</filter-name>
  <url-pattern>/rest/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>rest-timer</filter-name>
  <url-pattern>/s/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>feed-gzip</filter-name>
  <url-pattern>/api/feed/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>UrlRewriteFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>background</filter-name>
  <url-pattern>*.bg</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>WhitelistUrlRewriteFilter</filter-name>
  <url-pattern>/*</url-pattern>
  <dispatcher>REQUEST</dispatcher>
  <dispatcher>FORWARD</dispatcher>
 </filter-mapping>
 <filter-mapping>
  <filter-name>WhitelistPortal</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>contentFilter</filter-name>
  <url-pattern>/knowledge/SearchContent.do</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>contentFilter</filter-name>
  <url-pattern>/knowledge/SearchContent.bg</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>contentFilter</filter-name>
  <url-pattern>/contents/GetContent.do</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>contentFilter</filter-name>
  <url-pattern>/contents/GetContent.bg</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>contentFilter</filter-name>
  <url-pattern>/knowledge/getDocument.do</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>contentFilter</filter-name>
  <url-pattern>/knowledge/getDocument.bg</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>contentFilter</filter-name>
  <url-pattern>/knowledge/GetDocument.do</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>contentFilter</filter-name>
  <url-pattern>/knowledge/GetDocument.bg</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>sitemesh</filter-name>
  <url-pattern>/ntf/emailHtml/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>sitemesh</filter-name>
  <url-pattern>/ntf/modernEmailHtml/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>sitemesh</filter-name>
  <url-pattern>/collaboration/start/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>sitemesh</filter-name>
  <url-pattern>/personalization/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>sitemesh</filter-name>
  <url-pattern>/analytics/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>sitemesh</filter-name>
  <url-pattern>/portalreport.do</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>sitemesh</filter-name>
  <url-pattern>/queryRule.do</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>sitemesh</filter-name>
  <url-pattern>/dataStore.do</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>sitemesh</filter-name>
  <url-pattern>/admin/workingHours.do</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>sitemesh</filter-name>
  <url-pattern>/forums/*</url-pattern>
 </filter-mapping>
 <!-- Installer:Start Process Filter Mapping -->
 <filter-mapping>
  <filter-name>sitemesh</filter-name>
  <url-pattern>/webservices/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>sitemesh</filter-name>
  <url-pattern>/process/*</url-pattern>
 </filter-mapping>
 <!-- Installer:End Process Filter Mapping -->
 <filter-mapping>
  <filter-name>sitemesh</filter-name>
  <url-pattern>/knowledge/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>sitemesh</filter-name>
  <url-pattern>/tempo/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>sitemesh</filter-name>
  <url-pattern>/design/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>sitemesh</filter-name>
  <url-pattern>/rules/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>sitemesh</filter-name>
  <url-pattern>/contents/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>sitemesh</filter-name>
  <url-pattern>/components/grid/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>sitemesh</filter-name>
  <url-pattern>/components/search/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>sitemesh</filter-name>
  <url-pattern>/components/hierarchy/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>sitemesh</filter-name>
  <url-pattern>/components/picker2/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>sitemesh</filter-name>
  <url-pattern>/components/dialogs/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>sitemesh</filter-name>
  <url-pattern>/portal/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>sitemesh</filter-name>
  <url-pattern>/admin/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>sitemesh</filter-name>
  <url-pattern>/applications/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>sitemesh</filter-name>
  <url-pattern>/plugins/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>sitemesh</filter-name>
  <url-pattern>/portal.do</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>sitemesh</filter-name>
  <url-pattern>/portal.bg</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>sitemesh</filter-name>
  <url-pattern>/portal.admin</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>sitemesh</filter-name>
  <url-pattern>/register.popup</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>sitemesh</filter-name>
  <url-pattern>/userdetail_pop.popup</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>nav</filter-name>
  <url-pattern>*.do</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>nav</filter-name>
  <url-pattern>*.bg</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>nav</filter-name>
  <url-pattern>*.none</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>listingsServletFilter</filter-name>
  <url-pattern>/logs/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>listingsServletFilter</filter-name>
  <url-pattern>/shared-logs/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>listingsServletFilter</filter-name>
  <url-pattern>/shared-logs</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>filter-plugin-dispatcher-before-dispatch-request</filter-name>
  <url-pattern>/*</url-pattern>
  <dispatcher>REQUEST</dispatcher>
 </filter-mapping>
 <filter-mapping>
  <filter-name>filter-plugin-dispatcher-before-dispatch-forward</filter-name>
  <url-pattern>/*</url-pattern>
  <dispatcher>FORWARD</dispatcher>
 </filter-mapping>
 <filter-mapping>
  <filter-name>filter-plugin-dispatcher-before-dispatch-include</filter-name>
  <url-pattern>/*</url-pattern>
  <dispatcher>INCLUDE</dispatcher>
 </filter-mapping>
 <filter-mapping>
  <filter-name>filter-plugin-dispatcher-before-dispatch-error</filter-name>
  <url-pattern>/*</url-pattern>
  <dispatcher>ERROR</dispatcher>
 </filter-mapping>
 <filter-mapping>
  <filter-name>JsonRpcFilter</filter-name>
  <url-pattern>/JSON-RPC</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>deployment-management-servlet-filter</filter-name>
  <url-pattern>/deployment-management/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>webAssetMonitorFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <!-- The entry filter must run last for it to solve the intended problem -->
 <filter-mapping>
  <filter-name>entry</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>

 <!-- Listeners are run in the order specified here on startup but in *reverse* order on shutdown -->
 <listener>
   <listener-class>com.appiancorp.common.logging.ConfigureLog4j</listener-class>
 </listener>
 <listener>
  <listener-class>com.appiancorp.common.startup.WaitForStatefulComponentsListener</listener-class>
 </listener>
 <listener>
  <listener-class>com.appiancorp.common.web.HttpSessionCreateLogger</listener-class>
 </listener>
 <listener>
  <listener-class>com.appiancorp.rdbms.config.PrimaryDataSourceShutdown</listener-class>
 </listener>
 <listener>
  <listener-class>com.appiancorp.common.StartupContextListener</listener-class>
 </listener>
 <listener>
  <listener-class>com.appiancorp.common.ServerBootstrapEvaluationEnvironmentContextListener</listener-class>
 </listener>
 <listener>
  <listener-class>com.appiancorp.common.initialize.PluginObjectStorageMigrationListener</listener-class>
 </listener>
 <!-- Must come before LoadLegacySystemObjectsListener to indicate where documents are written to -->
 <listener>
  <listener-class>com.appiancorp.common.initialize.EnableAccdocsObjectStorageListener</listener-class>
 </listener>
 <!-- Must come before AppianSpringContextLoaderListener -->
 <listener>
  <listener-class>com.appiancorp.common.initialize.LoadLegacySystemObjectsListener</listener-class>
 </listener>
 <listener>
  <listener-class>com.appiancorp.common.AppianSpringContextLoaderListener</listener-class>
 </listener>
 <!-- Must come after AppianSpringContextLoaderListener -->
 <listener>
  <listener-class>com.appiancorp.common.startup.WebsocketHandlerRegistrationListener</listener-class>
 </listener>
 <listener>
  <listener-class>com.appiancorp.common.config.ConfigurationLoader</listener-class>
 </listener>
 <listener>
  <listener-class>com.appiancorp.common.startup.RedissonClientLoader</listener-class>
 </listener>
 <listener>
  <listener-class>com.appiancorp.portal.persistence.PortalStartupListener</listener-class>
 </listener>
 <listener>
  <listener-class>com.appiancorp.portal.alerting.EmailErrorAlertStartupListener</listener-class>
 </listener>
 <listener>
  <listener-class>com.appiancorp.plugins.PluginLoader</listener-class>
 </listener>
 <listener>
  <!-- Must follow PluginLoader -->
  <listener-class>com.appiancorp.applications.BundledApplicationsLoader</listener-class>
 </listener>
 <listener>
  <listener-class>com.appiancorp.common.event.HttpSessionListenerImpl</listener-class>
 </listener>
 <listener>
  <listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
 </listener>
 <!-- Used to retrieve the HttpRequestContext -->
 <listener>
  <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
 </listener>
 <listener>
  <listener-class>com.appiancorp.rpa.user.OnStartupRpaUserSyncer</listener-class>
 </listener>
 <listener>
  <listener-class>com.appiancorp.object.remote.aiskill.OnStartupCrossRegionApplier</listener-class>
 </listener>
    <!-- Used to disconnect a user from a PhpMyAdmin session-->
 <listener>
  <listener-class>com.appiancorp.security.auth.phpmyadmin.PhpMyAdminSessionListener</listener-class>
 </listener>
 <listener>
  <listener-class>com.appiancorp.security.auth.CookieConfigurationContextListener</listener-class>
 </listener>
 <listener>
  <!-- Must be after PluginLoader -->
  <listener-class>com.appiancorp.process.workpoller.UnattendedRequestPollerLoader</listener-class>
 </listener>
 <listener>
  <!-- Must be after PluginLoader: Should move to ConfigurationLoader for init, but wait on complete init -->
  <listener-class>com.appiancorp.process.jms.JmsProcessIntegrationLoader</listener-class>
 </listener>

 <listener>
  <!-- Must be after PluginLoader -->
  <listener-class>com.appiancorp.process.emailpoller.EmailPollerLoader</listener-class>
 </listener>
 <listener>
  <!-- Must be after PluginLoader -->
  <listener-class>com.twelvemonkeys.servlet.image.IIOProviderContextListener</listener-class>
 </listener>
 <listener>
 <listener-class>com.appiancorp.common.JacksonDefaultsOverride</listener-class>
</listener>
 <listener>
  <!-- Must be after PluginLoader -->
  <listener-class>com.appiancorp.common.initialize.InitializeEPEx</listener-class>
 </listener>
 <servlet>
  <servlet-name>portalLogsServlet</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>/WEB-INF/conf/portals/portalLogsServlet-servlet.xml</param-value>
  </init-param>
 </servlet>
 <servlet-mapping>
  <servlet-name>portalLogsServlet</servlet-name>
  <url-pattern>/portals/logging/*</url-pattern>
 </servlet-mapping>
 <servlet>
  <servlet-name>siteLogsServlet</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>/WEB-INF/conf/sites/siteLogsServlet-servlet.xml</param-value>
  </init-param>
 </servlet>
 <servlet-mapping>
  <servlet-name>siteLogsServlet</servlet-name>
  <url-pattern>/sites-monitoring/logging/*</url-pattern>
 </servlet-mapping>
 <servlet>
  <servlet-name>connectedSystemsAPIServlet</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>/WEB-INF/conf/connected-systems/connectedSystemsAPIServlet-servlet.xml</param-value>
  </init-param>
  <init-param>
   <param-name>throwExceptionIfNoHandlerFound</param-name>
   <param-value>true</param-value>
  </init-param>
 </servlet>
 <servlet-mapping>
  <servlet-name>connectedSystemsAPIServlet</servlet-name>
  <url-pattern>/connected-system-management/*</url-pattern>
 </servlet-mapping>
 <servlet>
  <servlet-name>edpApiServlet</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>/WEB-INF/conf/edp/edpApiServlet-servlet.xml</param-value>
  </init-param>
  <init-param>
   <param-name>throwExceptionIfNoHandlerFound</param-name>
   <param-value>true</param-value>
  </init-param>
 </servlet>
 <servlet-mapping>
  <servlet-name>edpApiServlet</servlet-name>
  <url-pattern>/cloud-database-management/*</url-pattern>
 </servlet-mapping>
 <servlet>
  <servlet-name>cors-servlet</servlet-name>
  <servlet-class>com.appiancorp.security.cors.CorsServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>webapi-servlet</servlet-name>
  <servlet-class>com.appiancorp.webapi.WebApiServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>deployment-management-servlet</servlet-name>
  <servlet-class>com.appiancorp.designdeploymentsapi.DeploymentManagementServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>clientapi-servlet</servlet-name>
  <servlet-class>com.appiancorp.clientapi.ClientApiServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>portals-clientapi-servlet</servlet-name>
  <servlet-class>com.appiancorp.clientapi.PortalsClientApiServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>appianRpaRequestHandler</servlet-name>
  <servlet-class>org.springframework.web.context.support.HttpRequestHandlerServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>appianRpaLoginRequestHandler</servlet-name>
  <servlet-class>org.springframework.web.context.support.HttpRequestHandlerServlet</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>deployment-management-servlet</servlet-name>
  <url-pattern>/deployment-management/*</url-pattern>
 </servlet-mapping>
 <servlet>
  <servlet-name>phpMyAdminAuthenticatorRequestHandler</servlet-name>
  <servlet-class>org.springframework.web.context.support.HttpRequestHandlerServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>forgotpassword-servlet</servlet-name>
  <servlet-class>com.appiancorp.security.auth.forgotpassword.ForgotPasswordRequestServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>saml-test-servlet</servlet-name>
  <servlet-class>com.appiancorp.security.auth.saml.SamlTestServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>saml-logout-servlet</servlet-name>
  <servlet-class>com.appiancorp.security.auth.saml.SamlLogoutServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>oauth-servlet</servlet-name>
  <servlet-class>com.appiancorp.connectedsystems.http.oauth.OAuthServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>oidc-test-servlet</servlet-name>
  <servlet-class>com.appiancorp.security.auth.oidc.test.OidcTestServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>oAuthTokenEndpointServlet</servlet-name>
  <servlet-class>org.springframework.web.context.support.HttpRequestHandlerServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>oAuthAuthCodeEndpointServlet</servlet-name>
  <servlet-class>org.springframework.web.context.support.HttpRequestHandlerServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>mobile-auth-redirect-servlet</servlet-name>
  <servlet-class>com.appiancorp.security.auth.mobile.MobileAuthRedirectServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>ce-servlet</servlet-name>
  <servlet-class>com.appiancorp.connectedenvironments.ConnectedEnvironmentsServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>plugin-servlet</servlet-name>
  <servlet-class>com.atlassian.plugin.servlet.ServletModuleContainerServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>login-page</servlet-name>
  <servlet-class>com.appiancorp.ap2.LoginPageServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>file-server</servlet-name>
  <servlet-class>com.appiancorp.plugins.servlet.FileServerServlet</servlet-class>
  <load-on-startup>4</load-on-startup>
 </servlet>
 <servlet>
  <servlet-name>init-email-ntf-request</servlet-name>
  <servlet-class>com.appiancorp.ap2.ns.InitEmailNtfRequest</servlet-class>
  <load-on-startup>2</load-on-startup>
 </servlet>
 <servlet>
  <servlet-name>action</servlet-name>
  <servlet-class>com.appiancorp.common.appianwebmvc.AppianWebMvcActionServlet</servlet-class>
  <init-param>
   <param-name>chainConfig</param-name>
   <param-value>com/appiancorp/web/framework/layouts/chain/chain-config.xml</param-value>
  </init-param>
  <!--
    You no longer need to update the config parameter with your appianwebmvc config files.  The Appianwebmvc Action
    Servlet has been overridden to use the Appian Config framework.  By default, this will scan all directories
    for files fitting the pattern **/appianwebmvc-config-*.xml.  In addition, you can manually add files that do not
    fit this pattern.  Please refer to /WEB-INF/config.xml.
  -->
  <init-param>
   <param-name>detail</param-name>
   <param-value>2</param-value>
  </init-param>
  <load-on-startup>2</load-on-startup>
 </servlet>
 <servlet>
  <servlet-name>suggest</servlet-name>
  <servlet-class>com.appiancorp.asi.components.autocomplete.SuggestServlet</servlet-class>
  <load-on-startup>8</load-on-startup>
 </servlet>
 <servlet>
  <servlet-name>suggestDesignObjects</servlet-name>
  <servlet-class>com.appiancorp.asi.components.autocomplete.SuggestDesignObjectsServlet</servlet-class>
  <load-on-startup>8</load-on-startup>
 </servlet>
 <servlet>
  <servlet-name>intuitiveurl</servlet-name>
  <servlet-class>com.appiancorp.ap2.IntuitiveUrlServlet</servlet-class>
  <load-on-startup>8</load-on-startup>
 </servlet>
 <servlet>
  <servlet-name>intuitiveurlpermanentredirect</servlet-name>
  <servlet-class>com.appiancorp.ap2.IntuitiveUrlPermanentRedirectServlet</servlet-class>
  <load-on-startup>8</load-on-startup>
 </servlet>
 <!-- GWT Start -->
 <servlet>
  <servlet-name>dataStoreServlet</servlet-name>
  <servlet-class>com.appiancorp.gwt.datastore.server.DataStoreRPCServiceImpl</servlet-class>
 </servlet>
 <servlet>
    <servlet-name>remoteLogging</servlet-name>
    <servlet-class>com.appiancorp.common.logging.GWTRemoteLoggingService</servlet-class>
  </servlet>
 <servlet>
  <servlet-name>queryRulesServlet</servlet-name>
  <servlet-class>com.appiancorp.gwt.queryrule.server.QueryRulesRpcServiceImpl</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>tempoSvcServlet</servlet-name>
  <servlet-class>com.appiancorp.gwt.tempo.server.TempoRpcServiceImpl</servlet-class>
 </servlet>
 <!-- GWT End -->
 <servlet>
  <servlet-name>environmenturl</servlet-name>
  <servlet-class>com.appiancorp.ap2.environment.EnvironmentUrlServlet</servlet-class>
  <load-on-startup>8</load-on-startup>
 </servlet>
 <servlet>
  <servlet-name>download</servlet-name>
  <servlet-class>com.appiancorp.km.servlet.Download</servlet-class>
  <load-on-startup>4</load-on-startup>
 </servlet>
 <servlet>
  <servlet-name>downloadfromurl</servlet-name>
  <servlet-class>com.appiancorp.ac.servlet.DownloadFromUrl</servlet-class>
  <load-on-startup>7</load-on-startup>
 </servlet>
 <!--
  <servlet>
    <servlet-name>initializesearch</servlet-name>
    <servlet-class>com.appiancorp.search.servlet.GenerateSearchIndex</servlet-class>
    <load-on-startup>10</load-on-startup>
  </servlet>

 Installer:Start Process Services -->
 <servlet>
  <servlet-name>pmws</servlet-name>
  <servlet-class>com.appiancorp.process.webservices.pmserver.PMServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>com.appiancorp.jsonrpc.JSONRPCServlet</servlet-name>
  <servlet-class>com.appiancorp.jsonrpc.JSONRPCServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>webpart</servlet-name>
  <servlet-class>com.appiancorp.sharepoint.webpart.WebPartServlet</servlet-class>
  <init-param>
   <param-name>SecretKey</param-name>
   <param-value>THE_SECRET_KEY_VALUE</param-value>
  </init-param>
 </servlet>
 <!--servlet>
  <servlet-name>tempo-feed-servlet</servlet-name>
  <servlet-class>org.apache.abdera.protocol.server.servlet.AbderaServlet</servlet-class>
  <init-param>
   <param-name>org.apache.abdera.protocol.server.Provider</param-name>
   <param-value>com.appiancorp.tempo.feed.FeedProvider</param-value>
  </init-param>
 </servlet-->
 <servlet>
  <servlet-name>tempo-user-servlet</servlet-name>
  <servlet-class>com.appiancorp.tempo.api.UserInfoServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>tempo-icon-servlet</servlet-name>
  <servlet-class>com.appiancorp.tempo.api.IconServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>tempo-approve-inline</servlet-name>
  <servlet-class>com.appiancorp.tempo.api.ApproveInlineTaskServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>tempo-groups-servlet</servlet-name>
  <servlet-class>com.appiancorp.tempo.api.TempoGroupsServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>tempo-open-a-case-servlet</servlet-name>
  <servlet-class>com.appiancorp.tempo.api.OpenACaseServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>tempo-subscription-servlet</servlet-name>
  <servlet-class>com.appiancorp.tempo.api.SubscriptionServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>tempo-favorite-servlet</servlet-name>
  <servlet-class>com.appiancorp.tempo.api.FavoriteServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>tempo-file-servlet</servlet-name>
  <servlet-class>com.appiancorp.tempo.api.FileServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>tempo-upload-servlet</servlet-name>
  <servlet-class>com.appiancorp.tempo.api.UploadServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>tempo-upload-servlet-encrypted</servlet-name>
  <servlet-class>com.appiancorp.tempo.api.EncryptedUploadServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>embedded-redirect-servlet</servlet-name>
  <servlet-class>com.appiancorp.embedded.http.RedirectServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>dblogin</servlet-name>
  <servlet-class>com.appiancorp.security.auth.phpmyadmin.PhpMyAdminLoginServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>listings</servlet-name>
  <servlet-class>com.appiancorp.tomcat.logs.LogsServlet</servlet-class>
  <init-param>
   <param-name>debug</param-name>
   <param-value>0</param-value>
  </init-param>
  <init-param>
   <param-name>listings</param-name>
   <param-value>true</param-value>
  </init-param>
  <init-param>
   <param-name>sortListings</param-name>
   <param-value>true</param-value>
  </init-param>
  <init-param>
   <param-name>sortDirectoriesFirst</param-name>
   <param-value>true</param-value>
  </init-param>
 </servlet>
 <servlet>
  <servlet-name>office-integrations-servlet</servlet-name>
  <servlet-class>com.appiancorp.ws.office.OfficeIntegrationServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>wopi</servlet-name>
  <servlet-class>com.appiancorp.ws.office.WopiHostServlet</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>wopi</servlet-name>
  <url-pattern>/wopi</url-pattern>
  <url-pattern>/wopi/</url-pattern>
  <url-pattern>/wopi/*</url-pattern>
 </servlet-mapping>
 <servlet>
   <servlet-name>self-test</servlet-name>
   <servlet-class>com.appiancorp.selftest.SelfTestServlet</servlet-class>
 </servlet>

 <listener>
  <listener-class>com.appiancorp.common.monitoring.AppianMetricsListener</listener-class>
 </listener>
 <servlet>
  <servlet-name>healthcheck</servlet-name>
  <servlet-class>com.appiancorp.common.healthcheck.HealthcheckServlet</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>healthcheck</servlet-name>
  <url-pattern>/healthz</url-pattern>
 </servlet-mapping>
 <servlet>
  <servlet-name>keepalive</servlet-name>
  <servlet-class>com.appiancorp.common.keepalive.KeepAliveServlet</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>keepalive</servlet-name>
  <url-pattern>/keep-alive</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>self-test</servlet-name>
  <url-pattern>/self-test</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>self-test</servlet-name>
  <url-pattern>/self-test/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>phpMyAdminAuthenticatorRequestHandler</servlet-name>
  <url-pattern>/dbauth</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>webapi-servlet</servlet-name>
  <url-pattern>/webapi/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>clientapi-servlet</servlet-name>
  <url-pattern>/clientapi/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>portals-clientapi-servlet</servlet-name>
  <url-pattern>/portals/clientapi/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>appianRpaRequestHandler</servlet-name>
  <url-pattern>/rpa/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>appianRpaLoginRequestHandler</servlet-name>
  <url-pattern>/rpalogin</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>oauth-servlet</servlet-name>
  <url-pattern>/oauth/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>oAuthTokenEndpointServlet</servlet-name>
  <url-pattern>/authorization/oauth/token</url-pattern>
  <url-pattern>/authorization/oauth/token/</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>oAuthAuthCodeEndpointServlet</servlet-name>
  <url-pattern>/oauth/authorize/*</url-pattern>
  <url-pattern>/oauth/authorize/</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>mobile-auth-redirect-servlet</servlet-name>
  <url-pattern>/mobileAuthSuccessHandler/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>ce-servlet</servlet-name>
  <url-pattern>/devops-infrastructure/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>forgotpassword-servlet</servlet-name>
  <url-pattern>/forgotpasswordrequest</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>saml-test-servlet</servlet-name>
  <url-pattern>/saml/AssertionConsumer</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>saml-logout-servlet</servlet-name>
  <url-pattern>/saml/LogoutConsumer</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>oidc-test-servlet</servlet-name>
  <url-pattern>/oidc/callback</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
   <servlet-name>webapi-servlet</servlet-name>
   <url-pattern>/internal/webapi/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>cors-servlet</servlet-name>
  <url-pattern>/cors</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
   <servlet-name>cors-servlet</servlet-name>
   <url-pattern>/cors/ping</url-pattern>
  </servlet-mapping>
 <servlet-mapping>
  <servlet-name>cors-servlet</servlet-name>
  <url-pattern>/cors/wc</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>webpart</servlet-name>
  <url-pattern>/webpart/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>plugin-servlet</servlet-name>
  <url-pattern>/plugins/servlet/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>file-server</servlet-name>
  <url-pattern>/download/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>com.appiancorp.jsonrpc.JSONRPCServlet</servlet-name>
  <url-pattern>/JSON-RPC</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>pmws</servlet-name>
  <url-pattern>/webservice/processmodel/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>suggest</servlet-name>
  <url-pattern>/suggest/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>suggestDesignObjects</servlet-name>
  <url-pattern>/suggestDesignObjects/*</url-pattern>
 </servlet-mapping>
 <!-- GWT Start -->
 <servlet-mapping>
   <servlet-name>remoteLogging</servlet-name>
   <url-pattern>/tempo/remote_logging</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>dataStoreServlet</servlet-name>
  <url-pattern>/masterapp/datastore</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>queryRulesServlet</servlet-name>
  <url-pattern>/masterapp/queryRule</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>tempoSvcServlet</servlet-name>
  <url-pattern>/tempo/tempoSvc</url-pattern>
 </servlet-mapping>
 <!-- GWT End -->
 <servlet-mapping>
  <servlet-name>environmenturl</servlet-name>
  <url-pattern>/apps/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>environmenturl</servlet-name>
  <url-pattern>/designer/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>intuitiveurl</servlet-name>
  <url-pattern>/content/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>intuitiveurl</servlet-name>
  <url-pattern>/thread/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>intuitiveurl</servlet-name>
  <url-pattern>/forum/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>intuitiveurl</servlet-name>
  <url-pattern>/user/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>intuitiveurl</servlet-name>
  <url-pattern>/group/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>intuitiveurl</servlet-name>
  <url-pattern>/page/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>intuitiveurlpermanentredirect</servlet-name>
  <url-pattern>/proc/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>intuitiveurl</servlet-name>
  <url-pattern>/report/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>intuitiveurl</servlet-name>
  <url-pattern>/task/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>intuitiveurlpermanentredirect</servlet-name>
  <url-pattern>/model/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>login-page</servlet-name>
  <url-pattern>/portal/loginPage</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>action</servlet-name>
  <url-pattern>*.bg</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>init-email-ntf-request</servlet-name>
  <url-pattern>/portal/initEmailNtfRequest.none</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>action</servlet-name>
  <url-pattern>*.none</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>action</servlet-name>
  <url-pattern>*.frameset</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>action</servlet-name>
  <url-pattern>*.admin</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>action</servlet-name>
  <url-pattern>*.popup</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>action</servlet-name>
  <url-pattern>*.layer</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>action</servlet-name>
  <url-pattern>*.do</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>action</servlet-name>
  <url-pattern>/process/forms/internal/task.pdf</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>action</servlet-name>
  <url-pattern>/process/forms/internal/process.pdf</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>action</servlet-name>
  <url-pattern>*.preview</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>action</servlet-name>
  <url-pattern>*.print</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>action</servlet-name>
  <url-pattern>*.simplepopup</url-pattern>
 </servlet-mapping>
 <!-- Installer:Start Collaboration -->
 <servlet-mapping>
  <servlet-name>download</servlet-name>
  <url-pattern>/collaboration/download</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>download</servlet-name>
  <url-pattern>/knowledge/download</url-pattern>
 </servlet-mapping>
 <!-- Installer:End Collaboration -->
 <servlet-mapping>
  <servlet-name>downloadfromurl</servlet-name>
  <url-pattern>/doc/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
 <!--
   Tempo generates URLs to resources served by this servlet.  If you change
   this URL mapping, you need to update:
     com.appiancorp.tempo.feed.UserInfoHelper
  -->
  <servlet-name>tempo-user-servlet</servlet-name>
  <url-pattern>/api/user/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>tempo-icon-servlet</servlet-name>
  <url-pattern>/api/icon/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>tempo-groups-servlet</servlet-name>
  <url-pattern>/api/groups/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>tempo-approve-inline</servlet-name>
  <url-pattern>/api/tempo/approveinline/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>tempo-open-a-case-servlet</servlet-name>
  <url-pattern>/api/tempo/open-a-case/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>tempo-subscription-servlet</servlet-name>
  <url-pattern>/api/tempo/subscription/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>tempo-favorite-servlet</servlet-name>
  <url-pattern>/api/tempo/favorite/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>tempo-file-servlet</servlet-name>
  <url-pattern>/api/tempo/file/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>tempo-upload-servlet</servlet-name>
  <url-pattern>/tempo/file-web/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>tempo-upload-servlet-encrypted</servlet-name>
  <url-pattern>/tempo/file-web-encrypt/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>embedded-redirect-servlet</servlet-name>
  <url-pattern>/embedded/redirect</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>dblogin</servlet-name>
  <url-pattern>/dblogin</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>listings</servlet-name>
  <url-pattern>/logs</url-pattern>
 </servlet-mapping>
  <servlet-mapping>
    <servlet-name>listings</servlet-name>
    <url-pattern>/logs/*</url-pattern>
  </servlet-mapping>
 <servlet-mapping>
  <servlet-name>listings</servlet-name>
  <url-pattern>/shared-logs</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>listings</servlet-name>
  <url-pattern>/shared-logs/*</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>office-integrations-servlet</servlet-name>
  <url-pattern>/integrations/office/*</url-pattern>
 </servlet-mapping>
 <session-config>
  <!--
    The timeout should be at least 5 minutes more than the value given to
    resources.appian.ap.application.appian.ap.session.timeoutwarn
    in custom.properties.
  -->
  <session-timeout>65</session-timeout>
 <cookie-config>
   <http-only>true</http-only>
   <!-- The <secure> setting is controlled by the conf.suite.SCHEME in custom.properties -->
  </cookie-config>
  <tracking-mode>COOKIE</tracking-mode>
 </session-config>
 <!-- #41835: WebLogic and WebShere don't have the mime-mapping for PNG extension by default -->
 <mime-mapping>
  <extension>png</extension>
  <mime-type>image/png</mime-type>
 </mime-mapping>
 <!-- AN-45117: ICO files are provided by the REST service as octet-stream content, IE needs the image/x-icon -->
 <mime-mapping>
  <extension>ico</extension>
  <mime-type>image/x-icon</mime-type>
 </mime-mapping>
 <!-- See http://en.wikipedia.org/wiki/HTML_Components for details -->
 <mime-mapping>
  <extension>htc</extension>
  <mime-type>text/x-component</mime-type>
 </mime-mapping>
 <mime-mapping>
  <extension>log</extension>
  <mime-type>text/plain</mime-type>
 </mime-mapping>
 <error-page>
  <error-code>400</error-code>
  <location>/framework/error/genericerror.jsp</location>
 </error-page>
 <error-page>
  <error-code>401</error-code>
  <location>/framework/error/genericerror.jsp</location>
 </error-page>
 <error-page>
  <error-code>402</error-code>
  <location>/framework/error/genericerror.jsp</location>
 </error-page>
 <error-page>
  <error-code>403</error-code>
  <location>/framework/error/genericerror.jsp</location>
 </error-page>
 <error-page>
  <error-code>404</error-code>
  <location>/framework/error/genericerror.jsp</location>
 </error-page>
 <error-page>
  <error-code>405</error-code>
  <location>/framework/error/genericerror.jsp</location>
 </error-page>
 <error-page>
  <error-code>406</error-code>
  <location>/framework/error/genericerror.jsp</location>
 </error-page>
 <error-page>
  <error-code>407</error-code>
  <location>/framework/error/genericerror.jsp</location>
 </error-page>
 <error-page>
  <error-code>408</error-code>
  <location>/framework/error/genericerror.jsp</location>
 </error-page>
 <error-page>
  <error-code>409</error-code>
  <location>/framework/error/genericerror.jsp</location>
 </error-page>
 <error-page>
  <error-code>410</error-code>
  <location>/framework/error/genericerror.jsp</location>
 </error-page>
 <error-page>
  <error-code>411</error-code>
  <location>/framework/error/genericerror.jsp</location>
 </error-page>
 <error-page>
  <error-code>412</error-code>
  <location>/framework/error/genericerror.jsp</location>
 </error-page>
 <error-page>
  <error-code>413</error-code>
  <location>/framework/error/genericerror.jsp</location>
 </error-page>
 <error-page>
  <error-code>414</error-code>
  <location>/framework/error/genericerror.jsp</location>
 </error-page>
 <error-page>
  <error-code>415</error-code>
  <location>/framework/error/genericerror.jsp</location>
 </error-page>
 <error-page>
  <error-code>416</error-code>
  <location>/framework/error/genericerror.jsp</location>
 </error-page>
 <error-page>
  <error-code>417</error-code>
  <location>/framework/error/genericerror.jsp</location>
 </error-page>
 <error-page>
  <error-code>418</error-code>
  <location>/framework/error/genericerror.jsp</location>
 </error-page>
 <error-page>
  <error-code>419 </error-code>
  <location>/framework/error/genericerror.jsp</location>
 </error-page>
 <error-page>
  <error-code>422</error-code>
  <location>/framework/error/genericerror.jsp</location>
 </error-page>
 <error-page>
  <error-code>423</error-code>
  <location>/framework/error/genericerror.jsp</location>
 </error-page>
 <error-page>
  <error-code>424</error-code>
  <location>/framework/error/genericerror.jsp</location>
 </error-page>
 <error-page>
  <error-code>426</error-code>
  <location>/framework/error/genericerror.jsp</location>
 </error-page>
 <error-page>
  <error-code>428</error-code>
  <location>/framework/error/genericerror.jsp</location>
 </error-page>
 <error-page>
  <error-code>429</error-code>
  <location>/framework/error/genericerror.jsp</location>
 </error-page>
 <error-page>
  <error-code>431</error-code>
  <location>/framework/error/genericerror.jsp</location>
 </error-page>
 <error-page>
  <error-code>500</error-code>
  <location>/framework/error/genericerror.jsp</location>
 </error-page>
 <!-- to keep backwards compatibility with v2.3, we disable el expressions -->
 <jsp-config>
  <jsp-property-group>
   <url-pattern>*.jsp</url-pattern>
   <el-ignored>true</el-ignored>
  </jsp-property-group>
 </jsp-config>
 <security-constraint>
  <display-name>APIs</display-name>
  <web-resource-collection>
   <web-resource-name>Web APIs</web-resource-name>
   <url-pattern>/api/*</url-pattern>
   <url-pattern>/webapi/*</url-pattern>
   <url-pattern>/internal/webapi/*</url-pattern>
   <url-pattern>/deployment-management/*</url-pattern>
   <url-pattern>/rest/*</url-pattern>
   <url-pattern>/plugins/servlet/stateless/*</url-pattern>
   <url-pattern>/metrics/*</url-pattern>
   <url-pattern>/clientapi/*</url-pattern>
   <url-pattern>/portals/clientapi/*</url-pattern>
   <url-pattern>/portals/logging/*</url-pattern>
   <url-pattern>/sites-monitoring/logging/*</url-pattern>
   <!-- OAuth 2.0 Token Request Endpoint can respond with custom error messages for unsupported methods -->
   <url-pattern>/authorization/oauth/token</url-pattern>
   <url-pattern>/authorization/oauth/token/</url-pattern>
   <url-pattern>/oauth/authorize</url-pattern>
   <url-pattern>/oauth/authorize/</url-pattern>
   <http-method>GET</http-method>
   <http-method>POST</http-method>
   <http-method>PUT</http-method>
   <http-method>DELETE</http-method>
   <http-method>HEAD</http-method>
   <http-method>OPTIONS</http-method>
  </web-resource-collection>
 </security-constraint>
 <security-constraint>
  <display-name>Endpoints accessible through PATCH</display-name>
  <web-resource-collection>
   <web-resource-name>Patch APIs</web-resource-name>
   <url-pattern>/plugins/servlet/stateless/*</url-pattern>
   <url-pattern>/webapi/*</url-pattern>
   <url-pattern>/connected-system-management/*</url-pattern>
   <url-pattern>/cloud-database-management/*</url-pattern>
   <http-method>PATCH</http-method>
  </web-resource-collection>
 </security-constraint>
 <security-constraint>
  <display-name>Restrict unsafe HTTP methods</display-name>
  <web-resource-collection>
   <web-resource-name>All</web-resource-name>
   <description>Restrict unsafe HTTP methods</description>
   <url-pattern>/*</url-pattern>
   <http-method>DELETE</http-method>
   <http-method>PUT</http-method>
  </web-resource-collection>
  <auth-constraint>
   <description>By not defining any role-names,
                     we disallow anyone from using the
                     http-methods defined above</description>
  </auth-constraint>
 </security-constraint>
 <security-constraint>
  <display-name>Restrict TRACE HTTP method</display-name>
  <web-resource-collection>
   <web-resource-name>restricted methods</web-resource-name>
   <description>Prevent TRACE HTTP method</description>
   <url-pattern>/*</url-pattern>
   <http-method>TRACE</http-method>
  </web-resource-collection>
 </security-constraint>
</web-app>
