This is a servlet container configuration issue, not a code issue -- no pr needed. The embedded servlet container comes pre-configured with async support enabled, but if you're using an external servlet container, you have to enable it yourself. This is documented here:
https://apereo.github.io/cas/5.2.x/installation/Configuring-Servlet-Container.html#async-support For Tomcat 8.5.x, you need to add <async-supported>true</async-supported> to the definition of the default web application servlet (around lines 103-115 of *conf/web.xml*), and also to the definition of the jsp compiler and execution servlet (around lines 251-263). In my implementation, I just added the above line as the last line of each definition, right before the </servlet> close-tag, and it works fine. --Dave -- DAVID A. CURRY, CISSP *DIRECTOR OF INFORMATION SECURITY* INFORMATION TECHNOLOGY 71 FIFTH AVE., 9TH FL., NEW YORK, NY 10003 +1 212 229-5300 x4728 • [email protected] [image: The New School] On Fri, Dec 15, 2017 at 5:41 AM, Bergner, Arnold < [email protected]> wrote: > Hi, > > > > I’m running CAS 5.2.0 on seperate tomcat. Trying to access the > status/ssosessions page, I get the following exception: > > > > java.lang.IllegalStateException: Async support must be enabled on a > servlet and for all filters involved in async request processing. This is > done in Java code using the Servlet API or by adding > "<async-supported>true</async-supported>" to servlet and filter > declarations in web.xml. > > > > Same occurs for /consentReview endpoint. The error is pretty clear and I’d > submit a PR, but I don’t know where to enable async processing in the > sources. I appreciate any help/hint here. > > > > More ouput below. > > > > Regards, > > Arnold > > > > > > 2017-12-15 11:24:18,816 DEBUG [org.springframework.web. > servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver] - > <Resolving exception from handler [public org.springframework.web. > context.request.async.WebAsyncTask<java.util.Map<java.lang.String, > java.lang.Object>> org.apereo.cas.web.report. > SingleSignOnSessionsReportController.getSsoSessions(java. > lang.String,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)]: > java.lang.IllegalStateException: Async support must be enabled on a > servlet and for all filters involved in async request processing. This is > done in Java code using the Servlet API or by adding > "<async-supported>true</async-supported>" to servlet and filter > declarations in web.xml.> > > 2017-12-15 11:24:18,820 DEBUG [org.springframework.web. > servlet.mvc.annotation.ResponseStatusExceptionResolver] - <Resolving > exception from handler [public org.springframework.web. > context.request.async.WebAsyncTask<java.util.Map<java.lang.String, > java.lang.Object>> org.apereo.cas.web.report. > SingleSignOnSessionsReportController.getSsoSessions(java. > lang.String,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)]: > java.lang.IllegalStateException: Async support must be enabled on a > servlet and for all filters involved in async request processing. This is > done in Java code using the Servlet API or by adding > "<async-supported>true</async-supported>" to servlet and filter > declarations in web.xml.> > > 2017-12-15 11:24:18,821 DEBUG [org.springframework.web. > servlet.mvc.support.DefaultHandlerExceptionResolver] - <Resolving > exception from handler [public org.springframework.web. > context.request.async.WebAsyncTask<java.util.Map<java.lang.String, > java.lang.Object>> org.apereo.cas.web.report. > SingleSignOnSessionsReportController.getSsoSessions(java. > lang.String,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)]: > java.lang.IllegalStateException: Async support must be enabled on a > servlet and for all filters involved in async request processing. This is > done in Java code using the Servlet API or by adding > "<async-supported>true</async-supported>" to servlet and filter > declarations in web.xml.> > > 2017-12-15 11:24:18,828 DEBUG > [org.springframework.web.servlet.DispatcherServlet] > - <Could not complete request> > > java.lang.IllegalStateException: Async support must be enabled on a > servlet and for all filters involved in async request processing. This is > done in Java code using the Servlet API or by adding > "<async-supported>true</async-supported>" to servlet and filter > declarations in web.xml. > > at org.springframework.util.Assert.state(Assert.java:70) > ~[spring-core-4.3.12.RELEASE.jar:4.3.12.RELEASE] > > at org.springframework.web.context.request.async. > StandardServletAsyncWebRequest.startAsync(StandardServletAsyncWebRequest.java:103) > ~[spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE] > > at org.springframework.web.context.request.async. > WebAsyncManager.startAsyncProcessing(WebAsyncManager.java:430) > ~[spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE] > > at org.springframework.web.context.request.async. > WebAsyncManager.startCallableProcessing(WebAsyncManager.java:309) > ~[spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE] > > at org.springframework.web.servlet.mvc.method.annotation. > AsyncTaskMethodReturnValueHandler.handleReturnValue( > AsyncTaskMethodReturnValueHandler.java:64) ~[spring-webmvc-4.3.12. > RELEASE.jar:4.3.12.RELEASE] > > at org.springframework.web.method.support. > HandlerMethodReturnValueHandlerComposite.handleReturnValue( > HandlerMethodReturnValueHandlerComposite.java:81) > ~[spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE] > > at org.springframework.web.servlet.mvc.method.annotation. > ServletInvocableHandlerMethod.invokeAndHandle( > ServletInvocableHandlerMethod.java:113) ~[spring-webmvc-4.3.12. > RELEASE.jar:4.3.12.RELEASE] > > at org.springframework.web.servlet.mvc.method.annotation. > RequestMappingHandlerAdapter.invokeHandlerMethod( > RequestMappingHandlerAdapter.java:827) ~[spring-webmvc-4.3.12. > RELEASE.jar:4.3.12.RELEASE] > > at org.springframework.web.servlet.mvc.method.annotation. > RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) > ~[spring-webmvc-4.3.12.RELEASE.jar:4.3.12.RELEASE] > > at org.springframework.web.servlet.mvc.method. > AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) > ~[spring-webmvc-4.3.12.RELEASE.jar:4.3.12.RELEASE] > > at org.springframework.web.servlet.DispatcherServlet. > doDispatch(DispatcherServlet.java:967) ~[spring-webmvc-4.3.12. > RELEASE.jar:4.3.12.RELEASE] > > at org.springframework.web.servlet.DispatcherServlet. > doService(DispatcherServlet.java:901) ~[spring-webmvc-4.3.12. > RELEASE.jar:4.3.12.RELEASE] > > at org.springframework.web.servlet.FrameworkServlet. > processRequest(FrameworkServlet.java:970) ~[spring-webmvc-4.3.12. > RELEASE.jar:4.3.12.RELEASE] > > at org.springframework.web.servlet.FrameworkServlet. > doGet(FrameworkServlet.java:861) ~[spring-webmvc-4.3.12. > RELEASE.jar:4.3.12.RELEASE] > > at > javax.servlet.http.HttpServlet.service(HttpServlet.java:635) > ~[servlet-api.jar:?] > > at org.springframework.web.servlet.FrameworkServlet. > service(FrameworkServlet.java:846) ~[spring-webmvc-4.3.12. > RELEASE.jar:4.3.12.RELEASE] > > at > javax.servlet.http.HttpServlet.service(HttpServlet.java:742) > ~[servlet-api.jar:?] > > at org.apache.catalina.core.ApplicationFilterChain. > internalDoFilter(ApplicationFilterChain.java:230) ~[catalina.jar:8.5.13] > > at org.apache.catalina.core.ApplicationFilterChain. > doFilter(ApplicationFilterChain.java:165) ~[catalina.jar:8.5.13] > > at > org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) > ~[tomcat-websocket.jar:8.5.13] > > at org.apache.catalina.core.ApplicationFilterChain. > internalDoFilter(ApplicationFilterChain.java:192) ~[catalina.jar:8.5.13] > > at org.apache.catalina.core.ApplicationFilterChain. > doFilter(ApplicationFilterChain.java:165) ~[catalina.jar:8.5.13] > > at org.apache.catalina.filters. > RequestDumperFilter.doFilter(RequestDumperFilter.java:203) > ~[catalina.jar:8.5.13] > > at org.apache.catalina.core.ApplicationFilterChain. > internalDoFilter(ApplicationFilterChain.java:192) ~[catalina.jar:8.5.13] > > at org.apache.catalina.core.ApplicationFilterChain. > doFilter(ApplicationFilterChain.java:165) ~[catalina.jar:8.5.13] > > at org.apereo.cas.web.support. > AuthenticationCredentialsLocalBinderClearingFilter.doFilter( > AuthenticationCredentialsLocalBinderClearingFilter.java:28) > ~[cas-server-core-web-5.2.0.jar:5.2.0] > > at org.apache.catalina.core.ApplicationFilterChain. > internalDoFilter(ApplicationFilterChain.java:192) ~[catalina.jar:8.5.13] > > at org.apache.catalina.core.ApplicationFilterChain. > doFilter(ApplicationFilterChain.java:165) ~[catalina.jar:8.5.13] > > at org.apereo.cas.security.RequestParameterPolicyEnforcem > entFilter.doFilter(RequestParameterPolicyEnforcementFilter.java:261) > ~[cas-server-security-filter-2.0.7.jar:2.0.7] > > at org.apache.catalina.core.ApplicationFilterChain. > internalDoFilter(ApplicationFilterChain.java:192) ~[catalina.jar:8.5.13] > > at org.apache.catalina.core.ApplicationFilterChain. > doFilter(ApplicationFilterChain.java:165) ~[catalina.jar:8.5.13] > > at org.apereo.cas.security.ResponseHeadersEnforcementFilt > er.doFilter(ResponseHeadersEnforcementFilter.java:245) > ~[cas-server-security-filter-2.0.7.jar:2.0.7] > > at org.apache.catalina.core.ApplicationFilterChain. > internalDoFilter(ApplicationFilterChain.java:192) ~[catalina.jar:8.5.13] > > at org.apache.catalina.core.ApplicationFilterChain. > doFilter(ApplicationFilterChain.java:165) ~[catalina.jar:8.5.13] > > at org.springframework.boot.actuate.trace. > WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:110) > ~[spring-boot-actuator-1.5.8.RELEASE.jar:1.5.8.RELEASE] > > at org.springframework.web.filter.OncePerRequestFilter. > doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.3.12.RELEASE. > jar:4.3.12.RELEASE] > > at org.apache.catalina.core.ApplicationFilterChain. > internalDoFilter(ApplicationFilterChain.java:192) ~[catalina.jar:8.5.13] > > at org.apache.catalina.core.ApplicationFilterChain. > doFilter(ApplicationFilterChain.java:165) ~[catalina.jar:8.5.13] > > at org.springframework.web.filter.RequestContextFilter. > doFilterInternal(RequestContextFilter.java:99) > ~[spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE] > > at org.springframework.web.filter.OncePerRequestFilter. > doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.3.12.RELEASE. > jar:4.3.12.RELEASE] > > at org.apache.catalina.core.ApplicationFilterChain. > internalDoFilter(ApplicationFilterChain.java:192) ~[catalina.jar:8.5.13] > > at org.apache.catalina.core.ApplicationFilterChain. > doFilter(ApplicationFilterChain.java:165) ~[catalina.jar:8.5.13] > > at org.springframework.web.filter. > HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:108) > ~[spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE] > > at org.springframework.web.filter.OncePerRequestFilter. > doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.3.12.RELEASE. > jar:4.3.12.RELEASE] > > at org.apache.catalina.core.ApplicationFilterChain. > internalDoFilter(ApplicationFilterChain.java:192) ~[catalina.jar:8.5.13] > > at org.apache.catalina.core.ApplicationFilterChain. > doFilter(ApplicationFilterChain.java:165) ~[catalina.jar:8.5.13] > > at org.springframework.web.filter.HiddenHttpMethodFilter. > doFilterInternal(HiddenHttpMethodFilter.java:81) > ~[spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE] > > at org.springframework.web.filter.OncePerRequestFilter. > doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.3.12.RELEASE. > jar:4.3.12.RELEASE] > > at org.apache.catalina.core.ApplicationFilterChain. > internalDoFilter(ApplicationFilterChain.java:192) ~[catalina.jar:8.5.13] > > at org.apache.catalina.core.ApplicationFilterChain. > doFilter(ApplicationFilterChain.java:165) ~[catalina.jar:8.5.13] > > at org.apereo.cas.logging.web. > ThreadContextMDCServletFilter.doFilter(ThreadContextMDCServletFilter.java:93) > ~[cas-server-core-logging-5.2.0.jar:5.2.0] > > at org.apache.catalina.core.ApplicationFilterChain. > internalDoFilter(ApplicationFilterChain.java:192) ~[catalina.jar:8.5.13] > > at org.apache.catalina.core.ApplicationFilterChain. > doFilter(ApplicationFilterChain.java:165) ~[catalina.jar:8.5.13] > > at org.springframework.boot.actuate.autoconfigure. > MetricsFilter.doFilterInternal(MetricsFilter.java:106) > ~[spring-boot-actuator-1.5.8.RELEASE.jar:1.5.8.RELEASE] > > at org.springframework.web.filter.OncePerRequestFilter. > doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.3.12.RELEASE. > jar:4.3.12.RELEASE] > > at org.apache.catalina.core.ApplicationFilterChain. > internalDoFilter(ApplicationFilterChain.java:192) ~[catalina.jar:8.5.13] > > at org.apache.catalina.core.ApplicationFilterChain. > doFilter(ApplicationFilterChain.java:165) ~[catalina.jar:8.5.13] > > at org.springframework.web.filter.CharacterEncodingFilter. > doFilterInternal(CharacterEncodingFilter.java:197) > ~[spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE] > > at org.springframework.web.filter.OncePerRequestFilter. > doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.3.12.RELEASE. > jar:4.3.12.RELEASE] > > at org.apache.catalina.core.ApplicationFilterChain. > internalDoFilter(ApplicationFilterChain.java:192) ~[catalina.jar:8.5.13] > > at org.apache.catalina.core.ApplicationFilterChain. > doFilter(ApplicationFilterChain.java:165) ~[catalina.jar:8.5.13] > > at org.springframework.boot.web.support.ErrorPageFilter. > doFilter(ErrorPageFilter.java:115) ~[spring-boot-1.5.8.RELEASE. > jar:1.5.8.RELEASE] > > at org.springframework.boot.web.support.ErrorPageFilter. > access$000(ErrorPageFilter.java:59) ~[spring-boot-1.5.8.RELEASE. > jar:1.5.8.RELEASE] > > at org.springframework.boot.web.support.ErrorPageFilter$1. > doFilterInternal(ErrorPageFilter.java:90) ~[spring-boot-1.5.8.RELEASE. > jar:1.5.8.RELEASE] > > at org.springframework.web.filter.OncePerRequestFilter. > doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.3.12.RELEASE. > jar:4.3.12.RELEASE] > > at org.springframework.boot.web.support.ErrorPageFilter. > doFilter(ErrorPageFilter.java:108) ~[spring-boot-1.5.8.RELEASE. > jar:1.5.8.RELEASE] > > at org.apache.catalina.core.ApplicationFilterChain. > internalDoFilter(ApplicationFilterChain.java:192) ~[catalina.jar:8.5.13] > > at org.apache.catalina.core.ApplicationFilterChain. > doFilter(ApplicationFilterChain.java:165) ~[catalina.jar:8.5.13] > > at org.apereo.inspektr.common.web. > ClientInfoThreadLocalFilter.doFilter(ClientInfoThreadLocalFilter.java:64) > ~[inspektr-common-1.7.GA.jar:1.7.GA] > > at org.apache.catalina.core.ApplicationFilterChain. > internalDoFilter(ApplicationFilterChain.java:192) ~[catalina.jar:8.5.13] > > at org.apache.catalina.core.ApplicationFilterChain. > doFilter(ApplicationFilterChain.java:165) ~[catalina.jar:8.5.13] > > at org.apache.logging.log4j.web. > Log4jServletFilter.doFilter(Log4jServletFilter.java:71) > ~[log4j-web-2.9.1.jar:2.9.1] > > at org.apache.catalina.core.ApplicationFilterChain. > internalDoFilter(ApplicationFilterChain.java:192) ~[catalina.jar:8.5.13] > > at org.apache.catalina.core.ApplicationFilterChain. > doFilter(ApplicationFilterChain.java:165) ~[catalina.jar:8.5.13] > > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) > ~[catalina.jar:8.5.13] > > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) > ~[catalina.jar:8.5.13] > > at org.apache.catalina.authenticator. > AuthenticatorBase.invoke(AuthenticatorBase.java:478) > ~[catalina.jar:8.5.13] > > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) > ~[catalina.jar:8.5.13] > > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80) > ~[catalina.jar:8.5.13] > > at org.apache.catalina.valves. > AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624) > ~[catalina.jar:8.5.13] > > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) > ~[catalina.jar:8.5.13] > > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341) > ~[catalina.jar:8.5.13] > > at > org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799) > ~[tomcat-coyote.jar:8.5.13] > > at org.apache.coyote.AbstractProcessorLight.process( > AbstractProcessorLight.java:66) ~[tomcat-coyote.jar:8.5.13] > > at org.apache.coyote.AbstractProtocol$ > ConnectionHandler.process(AbstractProtocol.java:861) > ~[tomcat-coyote.jar:8.5.13] > > at > org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455) > ~[tomcat-coyote.jar:8.5.13] > > at > org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) > ~[tomcat-coyote.jar:8.5.13] > > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > ~[?:1.8.0_131] > > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > ~[?:1.8.0_131] > > at org.apache.tomcat.util.threads.TaskThread$ > WrappingRunnable.run(TaskThread.java:61) ~[tomcat-util.jar:8.5.13] > > at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131] > > 2017-12-15 11:24:18,830 ERROR > [org.springframework.boot.web.support.ErrorPageFilter] > - <Forwarding to error page from request [/status/ssosessions/getSsoSessions] > due to exception [Async support must be enabled on a servlet and for all > filters involved in async request processing. This is done in Java code > using the Servlet API or by adding "<async-supported>true</async-supported>" > to servlet and filter declarations in web.xml.]> > > java.lang.IllegalStateException: Async support must be enabled on a > servlet and for all filters involved in async request processing. This is > done in Java code using the Servlet API or by adding > "<async-supported>true</async-supported>" to servlet and filter > declarations in web.xml. > > at org.springframework.util.Assert.state(Assert.java:70) > ~[spring-core-4.3.12.RELEASE.jar:4.3.12.RELEASE] > > at org.springframework.web.context.request.async. > StandardServletAsyncWebRequest.startAsync(StandardServletAsyncWebRequest.java:103) > ~[spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE] > > at org.springframework.web.context.request.async. > WebAsyncManager.startAsyncProcessing(WebAsyncManager.java:430) > ~[spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE] > > at org.springframework.web.context.request.async. > WebAsyncManager.startCallableProcessing(WebAsyncManager.java:309) > ~[spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE] > > at org.springframework.web.servlet.mvc.method.annotation. > AsyncTaskMethodReturnValueHandler.handleReturnValue( > AsyncTaskMethodReturnValueHandler.java:64) ~[spring-webmvc-4.3.12. > RELEASE.jar:4.3.12.RELEASE] > > … > > -- > - Website: https://apereo.github.io/cas > - Gitter Chatroom: https://gitter.im/apereo/cas > - List Guidelines: https://goo.gl/1VRrw7 > - Contributions: https://goo.gl/mh7qDG > --- > You received this message because you are subscribed to the Google Groups > "CAS Community" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit https://groups.google.com/a/ > apereo.org/d/msgid/cas-user/8aafb1ea81204974b79c8ba71d42b5 > b8%40hrz.tu-darmstadt.de > <https://groups.google.com/a/apereo.org/d/msgid/cas-user/8aafb1ea81204974b79c8ba71d42b5b8%40hrz.tu-darmstadt.de?utm_medium=email&utm_source=footer> > . > -- - Website: https://apereo.github.io/cas - Gitter Chatroom: https://gitter.im/apereo/cas - List Guidelines: https://goo.gl/1VRrw7 - Contributions: https://goo.gl/mh7qDG --- You received this message because you are subscribed to the Google Groups "CAS Community" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/a/apereo.org/d/msgid/cas-user/CA%2Bd9XAObOuj1d8tCNtEng%2BND0hW%2B5LFdGpr6szQUqaD8SqM7Xw%40mail.gmail.com.
