title: UnsupportedOperationException for ServletRequest.getServletContext()
body: <p>I'm working on upgrading an existing app from Spring Boot 1.5 to 2.1. This app is deployed as a WAR file in an existing Tomcat instance.</p>
  
  <p>I've gotten past most of the migration hurdles, but now I'm seeing that, when Thymeleaf's Spring Security Dialect tries to check <code>sec:authorize-url</code> rules, I get an <code>UnsupportedOperationException</code>:</p>
  
  <pre><code>2019-08-13 15:31:22,836 [http-nio-8080-exec-7] ERROR org.springframework.boot.web.servlet.support.ErrorPageFilter  - Cannot forward to error page for request [/] as the response has already been committed. As a result, the response may have the wrong status code. If your application is running on WebSphere Application Server you may be able to resolve this problem by setting com.ibm.ws.webcontainer.invokeFlushAfterService to false
  java.lang.UnsupportedOperationException: public abstract javax.servlet.ServletContext javax.servlet.ServletRequest.getServletContext() is not supported
      at org.springframework.security.web.UnsupportedOperationExceptionInvocationHandler.invoke(FilterInvocation.java:235)
      at com.sun.proxy.$Proxy386.getServletContext(Unknown Source)
      at javax.servlet.ServletRequestWrapper.getServletContext(ServletRequestWrapper.java:369)
      at org.springframework.boot.actuate.autoconfigure.security.servlet.EndpointRequest$AbstractRequestMatcher.matches(EndpointRequest.java:138)
      at org.springframework.boot.security.servlet.ApplicationContextRequestMatcher.matches(ApplicationContextRequestMatcher.java:57)
      at org.springframework.security.web.access.intercept.DefaultFilterInvocationSecurityMetadataSource.getAttributes(DefaultFilterInvocationSecurityMetadataSource.java:95)
      at org.springframework.security.web.access.DefaultWebInvocationPrivilegeEvaluator.isAllowed(DefaultWebInvocationPrivilegeEvaluator.java:103)
      at org.thymeleaf.extras.springsecurity5.auth.AuthUtils$MvcAuthUtils.authorizeUsingUrlCheckMvc(AuthUtils.java:362)
      at org.thymeleaf.extras.springsecurity5.auth.AuthUtils$MvcAuthUtils.access$300(AuthUtils.java:304)
      at org.thymeleaf.extras.springsecurity5.auth.AuthUtils.authorizeUsingUrlCheck(AuthUtils.java:236)
      at org.thymeleaf.extras.springsecurity5.dialect.processor.AuthorizeUrlAttrProcessor.isVisible(AuthorizeUrlAttrProcessor.java:74)
      at org.thymeleaf.standard.processor.AbstractStandardConditionalVisibilityTagProcessor.doProcess(AbstractStandardConditionalVisibilityTagProcessor.java:61)
      at org.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess(AbstractAttributeTagProcessor.java:74)
      ... 137 common frames omitted
  Wrapped by: org.thymeleaf.exceptions.TemplateProcessingException: Error during execution of processor 'org.thymeleaf.extras.springsecurity5.dialect.processor.AuthorizeUrlAttrProcessor' (template: "fragments/header" - line 41, col 37)
      at org.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess(AbstractAttributeTagProcessor.java:117)
      at org.thymeleaf.processor.element.AbstractElementTagProcessor.process(AbstractElementTagProcessor.java:95)
      at org.thymeleaf.util.ProcessorConfigurationUtils$ElementTagProcessorWrapper.process(ProcessorConfigurationUtils.java:633)
      at org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement(ProcessorTemplateHandler.java:1314)
      at org.thymeleaf.engine.OpenElementTag.beHandled(OpenElementTag.java:205)
      at org.thymeleaf.engine.Model.process(Model.java:282)
      at org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement(ProcessorTemplateHandler.java:1587)
      at org.thymeleaf.engine.OpenElementTag.beHandled(OpenElementTag.java:205)
      at org.thymeleaf.engine.Model.process(Model.java:282)
      at org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement(ProcessorTemplateHandler.java:1587)
      at org.thymeleaf.engine.OpenElementTag.beHandled(OpenElementTag.java:205)
      at org.thymeleaf.engine.Model.process(Model.java:282)
      at org.thymeleaf.engine.Model.process(Model.java:290)
      at org.thymeleaf.engine.GatheringModelProcessable.process(GatheringModelProcessable.java:78)
      at org.thymeleaf.engine.ProcessorTemplateHandler.handleCloseElement(ProcessorTemplateHandler.java:1640)
      at org.thymeleaf.engine.TemplateHandlerAdapterMarkupHandler.handleCloseElementEnd(TemplateHandlerAdapterMarkupHandler.java:388)
      at org.thymeleaf.templateparser.markup.InlinedOutputExpressionMarkupHandler$InlineMarkupAdapterPreProcessorHandler.handleCloseElementEnd(InlinedOutputExpressionMarkupHandler.java:322)
      at org.thymeleaf.standard.inline.OutputExpressionInlinePreProcessorHandler.handleCloseElementEnd(OutputExpressionInlinePreProcessorHandler.java:220)
      at org.thymeleaf.templateparser.markup.InlinedOutputExpressionMarkupHandler.handleCloseElementEnd(InlinedOutputExpressionMarkupHandler.java:164)
      at org.attoparser.HtmlElement.handleCloseElementEnd(HtmlElement.java:169)
      at org.attoparser.HtmlMarkupHandler.handleCloseElementEnd(HtmlMarkupHandler.java:412)
      at org.attoparser.MarkupEventProcessorHandler.handleCloseElementEnd(MarkupEventProcessorHandler.java:473)
      at org.attoparser.ParsingElementMarkupUtil.parseCloseElement(ParsingElementMarkupUtil.java:201)
      at org.attoparser.MarkupParser.parseBuffer(MarkupParser.java:725)
      at org.attoparser.MarkupParser.parseDocument(MarkupParser.java:301)
      ... 113 common frames omitted
  Wrapped by: org.attoparser.ParseException: Error during execution of processor 'org.thymeleaf.extras.springsecurity5.dialect.processor.AuthorizeUrlAttrProcessor' (template: "fragments/header" - line 41, col 37)
      at org.attoparser.MarkupParser.parseDocument(MarkupParser.java:393)
      at org.attoparser.MarkupParser.parse(MarkupParser.java:257)
      at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:230)
      ... 111 common frames omitted
  Wrapped by: org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/home.html]")
      at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:241)
      at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parseStandalone(AbstractMarkupTemplateParser.java:100)
      at org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:666)
      at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1098)
      at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1072)
      at org.thymeleaf.spring5.view.ThymeleafView.renderFragment(ThymeleafView.java:362)
      at org.thymeleaf.spring5.view.ThymeleafView.render(ThymeleafView.java:189)
      at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1371)
      at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1117)
      at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1056)
      at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)
      at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)
      at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
      at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
      at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
      at org.togglz.servlet.TogglzFilter.doFilter(TogglzFilter.java:100)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
      at org.springframework.web.servlet.resource.ResourceUrlEncodingFilter.doFilter(ResourceUrlEncodingFilter.java:63)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
      at org.springframework.web.filter.AbstractRequestLoggingFilter.doFilterInternal(AbstractRequestLoggingFilter.java:262)
      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
      at org.springframework.security.web.authentication.switchuser.SwitchUserFilter.doFilter(SwitchUserFilter.java:200)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
      at org.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal(HttpTraceFilter.java:88)
      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320)
      at org.springframework.security.web.authentication.switchuser.SwitchUserFilter.doFilter(SwitchUserFilter.java:200)
      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
      at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)
      at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)
      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
      at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)
      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
      at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)
      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
      at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)
      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
      at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)
      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
      at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
      at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:158)
      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)
      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
      at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)
      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
      at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)
      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
      at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:74)
      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)
      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
      at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
      at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)
      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)
      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
      at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215)
      at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178)
      at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357)
      at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:270)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
      at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)
      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
      at org.springframework.boot.web.servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:128)
      at org.springframework.boot.web.servlet.support.ErrorPageFilter.access$000(ErrorPageFilter.java:66)
      at org.springframework.boot.web.servlet.support.ErrorPageFilter$1.doFilterInternal(ErrorPageFilter.java:103)
      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)
      at org.springframework.boot.web.servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:121)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
      at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:114)
      at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:104)
      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
      at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
      at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
      at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
      at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
      at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:853)
      at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1587)
      at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
      at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
      at java.lang.Thread.run(Thread.java:748)
  </code></pre>
  
  <p>The Thymeleaf code at the exception point is just a <code>sec:authorize-url</code> attribute, like:</p>
  
  <pre class="lang-html prettyprint-override"><code>&lt;li sec:authorize-url="/foo"&gt;...&lt;/li&gt;
  </code></pre>
  
  <p>I can't see any obvious reason why the ServletContext wouldn't be available. Any pointers on how to debug this further would be greatly appreciated.</p>
  
  <p>This only happens after I've logged in, so I know that Thymeleaf and the Servlet stuff aren't fundamentally broken, as I see my custom login page. It seems like there must just be some "gotcha" with the Spring Security Dialect that I've missed, or maybe something weird with some other Filter somewhere?</p>
  
  <hr>
  
  <p><strong>Update</strong></p>
  
  <p>I've poked around in the debugger, and I see that this is occurring when <code>org.springframework.boot.actuate.autoconfigure.security.servlet.EndpointRequest.AbstractRequestMatcher#matches</code> is invoked with a <code>org.springframework.security.web.DummyRequest</code>.</p>
  
  <p>The stack at that point, approximately:</p>
  
  <pre><code>matches:138, EndpointRequest$AbstractRequestMatcher (org.springframework.boot.actuate.autoconfigure.security.servlet)
  matches:57, ApplicationContextRequestMatcher (org.springframework.boot.security.servlet)
  getAttributes:95, DefaultFilterInvocationSecurityMetadataSource (org.springframework.security.web.access.intercept)
  isAllowed:103, DefaultWebInvocationPrivilegeEvaluator (org.springframework.security.web.access)
  authorizeUsingUrlCheckMvc:362, AuthUtils$MvcAuthUtils (org.thymeleaf.extras.springsecurity5.auth)
  access$300:304, AuthUtils$MvcAuthUtils (org.thymeleaf.extras.springsecurity5.auth)
  authorizeUsingUrlCheck:236, AuthUtils (org.thymeleaf.extras.springsecurity5.auth)
  isVisible:74, AuthorizeUrlAttrProcessor (org.thymeleaf.extras.springsecurity5.dialect.processor)
  doProcess:61, AbstractStandardConditionalVisibilityTagProcessor (org.thymeleaf.standard.processor)
  doProcess:74, AbstractAttributeTagProcessor (org.thymeleaf.processor.element)
  process:95, AbstractElementTagProcessor (org.thymeleaf.processor.element)
  process:633, ProcessorConfigurationUtils$ElementTagProcessorWrapper (org.thymeleaf.util)
  handleOpenElement:1314, ProcessorTemplateHandler (org.thymeleaf.engine)
  beHandled:205, OpenElementTag (org.thymeleaf.engine)
  process:282, Model (org.thymeleaf.engine)
  handleOpenElement:1587, ProcessorTemplateHandler (org.thymeleaf.engine)
  beHandled:205, OpenElementTag (org.thymeleaf.engine)
  process:282, Model (org.thymeleaf.engine)
  handleOpenElement:1587, ProcessorTemplateHandler (org.thymeleaf.engine)
  beHandled:205, OpenElementTag (org.thymeleaf.engine)
  process:282, Model (org.thymeleaf.engine)
  process:290, Model (org.thymeleaf.engine)
  process:78, GatheringModelProcessable (org.thymeleaf.engine)
  handleCloseElement:1640, ProcessorTemplateHandler (org.thymeleaf.engine)
  handleCloseElementEnd:388, TemplateHandlerAdapterMarkupHandler (org.thymeleaf.engine)
  handleCloseElementEnd:322, InlinedOutputExpressionMarkupHandler$InlineMarkupAdapterPreProcessorHandler (org.thymeleaf.templateparser.markup)
  handleCloseElementEnd:220, OutputExpressionInlinePreProcessorHandler (org.thymeleaf.standard.inline)
  handleCloseElementEnd:164, InlinedOutputExpressionMarkupHandler (org.thymeleaf.templateparser.markup)
  handleCloseElementEnd:169, HtmlElement (org.attoparser)
  handleCloseElementEnd:412, HtmlMarkupHandler (org.attoparser)
  handleCloseElementEnd:473, MarkupEventProcessorHandler (org.attoparser)
  parseCloseElement:201, ParsingElementMarkupUtil (org.attoparser)
  parseBuffer:725, MarkupParser (org.attoparser)
  parseDocument:301, MarkupParser (org.attoparser)
  parse:257, MarkupParser (org.attoparser)
  parse:230, AbstractMarkupTemplateParser (org.thymeleaf.templateparser.markup)
  parseStandalone:100, AbstractMarkupTemplateParser (org.thymeleaf.templateparser.markup)
  parseAndProcess:666, TemplateManager (org.thymeleaf.engine)
  process:1098, TemplateEngine (org.thymeleaf)
  process:1072, TemplateEngine (org.thymeleaf)
  renderFragment:362, ThymeleafView (org.thymeleaf.spring5.view)
  render:189, ThymeleafView (org.thymeleaf.spring5.view)
  render:1371, DispatcherServlet (org.springframework.web.servlet)
  processDispatchResult:1117, DispatcherServlet (org.springframework.web.servlet)
  doDispatch:1056, DispatcherServlet (org.springframework.web.servlet)
  doService:942, DispatcherServlet (org.springframework.web.servlet)
  processRequest:1005, FrameworkServlet (org.springframework.web.servlet)
  doGet:897, FrameworkServlet (org.springframework.web.servlet)
  service:635, HttpServlet (javax.servlet.http)
  service:882, FrameworkServlet (org.springframework.web.servlet)
  service:742, HttpServlet (javax.servlet.http)
  internalDoFilter:231, ApplicationFilterChain (org.apache.catalina.core)
  doFilter:166, ApplicationFilterChain (org.apache.catalina.core)
  doFilter:52, WsFilter (org.apache.tomcat.websocket.server)
  internalDoFilter:193, ApplicationFilterChain (org.apache.catalina.core)
  doFilter:166, ApplicationFilterChain (org.apache.catalina.core)
  doFilter:100, TogglzFilter (org.togglz.servlet)
  internalDoFilter:193, ApplicationFilterChain (org.apache.catalina.core)
  doFilter:166, ApplicationFilterChain (org.apache.catalina.core)
  doFilter:63, ResourceUrlEncodingFilter (org.springframework.web.servlet.resource)
  internalDoFilter:193, ApplicationFilterChain (org.apache.catalina.core)
  doFilter:166, ApplicationFilterChain (org.apache.catalina.core)
  doFilterInternal:262, AbstractRequestLoggingFilter (org.springframework.web.filter)
  doFilter:118, OncePerRequestFilter (org.springframework.web.filter)
  internalDoFilter:193, ApplicationFilterChain (org.apache.catalina.core)
  doFilter:166, ApplicationFilterChain (org.apache.catalina.core)
  doFilter:200, SwitchUserFilter (org.springframework.security.web.authentication.switchuser)
  internalDoFilter:193, ApplicationFilterChain (org.apache.catalina.core)
  doFilter:166, ApplicationFilterChain (org.apache.catalina.core)
  doFilterInternal:88, HttpTraceFilter (org.springframework.boot.actuate.web.trace.servlet)
  doFilter:118, OncePerRequestFilter (org.springframework.web.filter)
  internalDoFilter:193, ApplicationFilterChain (org.apache.catalina.core)
  doFilter:166, ApplicationFilterChain (org.apache.catalina.core)
  doFilter:320, FilterChainProxy$VirtualFilterChain (org.springframework.security.web)
  doFilter:200, SwitchUserFilter (org.springframework.security.web.authentication.switchuser)
  doFilter:334, FilterChainProxy$VirtualFilterChain (org.springframework.security.web)
  invoke:127, FilterSecurityInterceptor (org.springframework.security.web.access.intercept)
  doFilter:91, FilterSecurityInterceptor (org.springframework.security.web.access.intercept)
  doFilter:334, FilterChainProxy$VirtualFilterChain (org.springframework.security.web)
  doFilter:119, ExceptionTranslationFilter (org.springframework.security.web.access)
  doFilter:334, FilterChainProxy$VirtualFilterChain (org.springframework.security.web)
  doFilter:137, SessionManagementFilter (org.springframework.security.web.session)
  doFilter:334, FilterChainProxy$VirtualFilterChain (org.springframework.security.web)
  doFilter:111, AnonymousAuthenticationFilter (org.springframework.security.web.authentication)
  doFilter:334, FilterChainProxy$VirtualFilterChain (org.springframework.security.web)
  doFilter:170, SecurityContextHolderAwareRequestFilter (org.springframework.security.web.servletapi)
  doFilter:334, FilterChainProxy$VirtualFilterChain (org.springframework.security.web)
  doFilter:63, RequestCacheAwareFilter (org.springframework.security.web.savedrequest)
  doFilter:334, FilterChainProxy$VirtualFilterChain (org.springframework.security.web)
  doFilterInternal:158, BasicAuthenticationFilter (org.springframework.security.web.authentication.www)
  doFilter:118, OncePerRequestFilter (org.springframework.web.filter)
  doFilter:334, FilterChainProxy$VirtualFilterChain (org.springframework.security.web)
  doFilter:200, AbstractAuthenticationProcessingFilter (org.springframework.security.web.authentication)
  doFilter:334, FilterChainProxy$VirtualFilterChain (org.springframework.security.web)
  doFilter:116, LogoutFilter (org.springframework.security.web.authentication.logout)
  doFilter:334, FilterChainProxy$VirtualFilterChain (org.springframework.security.web)
  doFilterInternal:74, HeaderWriterFilter (org.springframework.security.web.header)
  doFilter:118, OncePerRequestFilter (org.springframework.web.filter)
  doFilter:334, FilterChainProxy$VirtualFilterChain (org.springframework.security.web)
  doFilter:105, SecurityContextPersistenceFilter (org.springframework.security.web.context)
  doFilter:334, FilterChainProxy$VirtualFilterChain (org.springframework.security.web)
  doFilterInternal:56, WebAsyncManagerIntegrationFilter (org.springframework.security.web.context.request.async)
  doFilter:118, OncePerRequestFilter (org.springframework.web.filter)
  doFilter:334, FilterChainProxy$VirtualFilterChain (org.springframework.security.web)
  doFilterInternal:215, FilterChainProxy (org.springframework.security.web)
  doFilter:178, FilterChainProxy (org.springframework.security.web)
  invokeDelegate:357, DelegatingFilterProxy (org.springframework.web.filter)
  doFilter:270, DelegatingFilterProxy (org.springframework.web.filter)
  internalDoFilter:193, ApplicationFilterChain (org.apache.catalina.core)
  doFilter:166, ApplicationFilterChain (org.apache.catalina.core)
  doFilterInternal:93, HiddenHttpMethodFilter (org.springframework.web.filter)
  doFilter:118, OncePerRequestFilter (org.springframework.web.filter)
  internalDoFilter:193, ApplicationFilterChain (org.apache.catalina.core)
  doFilter:166, ApplicationFilterChain (org.apache.catalina.core)
  doFilter:128, ErrorPageFilter (org.springframework.boot.web.servlet.support)
  access$000:66, ErrorPageFilter (org.springframework.boot.web.servlet.support)
  doFilterInternal:103, ErrorPageFilter$1 (org.springframework.boot.web.servlet.support)
  doFilter:118, OncePerRequestFilter (org.springframework.web.filter)
  doFilter:121, ErrorPageFilter (org.springframework.boot.web.servlet.support)
  internalDoFilter:193, ApplicationFilterChain (org.apache.catalina.core)
  doFilter:166, ApplicationFilterChain (org.apache.catalina.core)
  filterAndRecordMetrics:114, WebMvcMetricsFilter (org.springframework.boot.actuate.metrics.web.servlet)
  doFilterInternal:104, WebMvcMetricsFilter (org.springframework.boot.actuate.metrics.web.servlet)
  doFilter:118, OncePerRequestFilter (org.springframework.web.filter)
  internalDoFilter:193, ApplicationFilterChain (org.apache.catalina.core)
  doFilter:166, ApplicationFilterChain (org.apache.catalina.core)
  doFilterInternal:200, CharacterEncodingFilter (org.springframework.web.filter)
  doFilter:118, OncePerRequestFilter (org.springframework.web.filter)
  internalDoFilter:193, ApplicationFilterChain (org.apache.catalina.core)
  doFilter:166, ApplicationFilterChain (org.apache.catalina.core)
  invoke:199, StandardWrapperValve (org.apache.catalina.core)
  invoke:96, StandardContextValve (org.apache.catalina.core)
  invoke:493, AuthenticatorBase (org.apache.catalina.authenticator)
  invoke:137, StandardHostValve (org.apache.catalina.core)
  invoke:81, ErrorReportValve (org.apache.catalina.valves)
  invoke:660, AbstractAccessLogValve (org.apache.catalina.valves)
  invoke:87, StandardEngineValve (org.apache.catalina.core)
  service:343, CoyoteAdapter (org.apache.catalina.connector)
  service:798, Http11Processor (org.apache.coyote.http11)
  process:66, AbstractProcessorLight (org.apache.coyote)
  process:808, AbstractProtocol$ConnectionHandler (org.apache.coyote)
  doRun:1498, NioEndpoint$SocketProcessor (org.apache.tomcat.util.net)
  run:49, SocketProcessorBase (org.apache.tomcat.util.net)
  runWorker:1149, ThreadPoolExecutor (java.util.concurrent)
  run:624, ThreadPoolExecutor$Worker (java.util.concurrent)
  run:61, TaskThread$WrappingRunnable (org.apache.tomcat.util.threads)
  run:748, Thread (java.lang)
  </code></pre>