rundeck / rundeck

Enable Self-Service Operations: Give specific users access to your existing tools, services, and scripts
http://rundeck.org
Apache License 2.0
5.48k stars 909 forks source link

Tomcat 7 and Rundeck v3 compatibility #4497

Closed danduff closed 5 years ago

danduff commented 5 years ago

Retrieving execution log using rundeck-s3-log-plugin after upgrading to Rundeck 3.0.7 fails with the following error in the catalina log: org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: javax/servlet/WriteListener

This works previously on Rundeck 2.11.4. Looking around it seems as though there are issues with upgraded grails version in Rundeck v3 and tomcat 7.

https://stackoverflow.com/questions/46106614/grails-3-3-0-on-tomcat-7-0-57 https://stackoverflow.com/questions/49990692/grails-application-response-outputstream-fails-since-upgrade-to-grails-3-3

To Reproduce View log output of completed execution and select Text/HTML/Download option to retrieve log from S3 log storage. Get following error:

Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: javax/servlet/WriteListener

Full Stack:

2019-02-13 14:44:13.293 ERROR --- [io-8080-exec-20] StackTrace                               : Full Stack Trace:

org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: javax/servlet/WriteListener
>...at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)
>...at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
>...at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
>...at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
>...at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
>...at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
>...at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
>...at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
>...at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>...at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
>...at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>...at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>...at org.apache.catalina.filters.RequestDumperFilter.doFilter(RequestDumperFilter.java:203)
>...at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>...at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)                                                                                                                                                                                                                            
>...at org.apache.catalina.filters.ExpiresFilter.doFilter(ExpiresFilter.java:1201)
>...at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>...at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>...at eu.fidessa.web.NoCacheFilter.doFilter(NoCacheFilter.java:51)
>...at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>...at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>...at org.springframework.security.web.jaasapi.JaasApiIntegrationFilter$1.run(JaasApiIntegrationFilter.java:96)
>...at java.security.AccessController.doPrivileged(Native Method)
>...at javax.security.auth.Subject.doAs(Subject.java:422)
>...at org.springframework.security.web.jaasapi.JaasApiIntegrationFilter.doFilter(JaasApiIntegrationFilter.java:105)
>...at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>...at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>...at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55)
>...at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
>...at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>...at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>...at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:111)
>...at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
>...at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>...at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>...at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317)
>...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:331)
>...at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114)
>...at grails.plugin.springsecurity.web.UpdateRequestContextHolderExceptionTranslationFilter.doFilter(UpdateRequestContextHolderExceptionTranslationFilter.groovy:64)
>...at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
>...at grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter.doFilter(GrailsAnonymousAuthenticationFilter.groovy:54)
>...at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
>...at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:158)
>...at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
>...at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)
>...at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
>...at org.springframework.security.web.jaasapi.JaasApiIntegrationFilter$1.run(JaasApiIntegrationFilter.java:96)
>...at java.security.AccessController.doPrivileged(Native Method)
>...at javax.security.auth.Subject.doAs(Subject.java:422)
>...at org.springframework.security.web.jaasapi.JaasApiIntegrationFilter.doFilter(JaasApiIntegrationFilter.java:105)
>...at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
>...at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)
>...at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
>...at grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter.doFilter(MutableLogoutFilter.groovy:64)
>...at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
>...at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
>...at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
>...at grails.plugin.springsecurity.web.SecurityRequestHolderFilter.doFilter(SecurityRequestHolderFilter.groovy:58)
>...at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
>...at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214)
>...at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177)
>...at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>...at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>...at org.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:77)
>...at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
>...at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>...at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>...at org.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:67)
>...at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
>...at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>...at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>...at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
>...at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
>...at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>...at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>...at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:96)
>...at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
>...at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>...at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>...at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:103)
>...at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
>...at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>...at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>...at org.springframework.boot.web.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:130)
>...at org.springframework.boot.web.support.ErrorPageFilter.access$000(ErrorPageFilter.java:66)
>...at org.springframework.boot.web.support.ErrorPageFilter$1.doFilterInternal(ErrorPageFilter.java:105)
>...at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
>...at org.springframework.boot.web.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:123)
>...at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>...at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>...at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
>...at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
>...at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
>...at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
>...at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
>...at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
>...at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
>...at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:436)
>...at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078)
>...at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
>...at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1749)
>...at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1708)
>...at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>...at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>...at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
>...at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NoClassDefFoundError: javax/servlet/WriteListener
>...at java.lang.Class.getDeclaredMethods0(Native Method)
>...at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
>...at java.lang.Class.privateGetPublicMethods(Class.java:2902)
>...at java.lang.Class.getMethods(Class.java:1615)
>...at java.beans.Introspector.getPublicDeclaredMethods(Introspector.java:1336)
>...at java.beans.Introspector.getTargetMethodInfo(Introspector.java:1197)
>...at java.beans.Introspector.getBeanInfo(Introspector.java:426)
>...at java.beans.Introspector.getBeanInfo(Introspector.java:173)
>...at groovy.lang.MetaClassImpl$15.run(MetaClassImpl.java:3328)
>...at java.security.AccessController.doPrivileged(Native Method)
>...at groovy.lang.MetaClassImpl.addProperties(MetaClassImpl.java:3326)
>...at groovy.lang.MetaClassImpl.initialize(MetaClassImpl.java:3303)
>...at org.codehaus.groovy.reflection.ClassInfo.getMetaClassUnderLock(ClassInfo.java:289)
>...at org.codehaus.groovy.reflection.ClassInfo.getMetaClass(ClassInfo.java:331)
>...at org.codehaus.groovy.reflection.ClassInfo.getMetaClass(ClassInfo.java:341)
>...at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.getMetaClass(MetaClassRegistryImpl.java:281)
>...at org.codehaus.groovy.runtime.InvokerHelper.getMetaClass(InvokerHelper.java:901)
>...at org.codehaus.groovy.runtime.callsite.CallSiteArray.createPojoSite(CallSiteArray.java:124)
>...at org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallSite(CallSiteArray.java:165)
>...at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
>...at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
>...at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:128)
>...at rundeck.controllers.ExecutionController$_downloadOutput_closure28.doCall(ExecutionController.groovy:795)
>...at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>...at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>...at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>...at java.lang.reflect.Method.invoke(Method.java:498)
>...at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:98)
>...at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)                                                                                                                                                                                                                                                           
>...at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:264)
>...at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034)
>...at groovy.lang.Closure.call(Closure.java:418)
>...at groovy.lang.Closure.call(Closure.java:434)
>...at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2125)
>...at org.codehaus.groovy.runtime.dgm$162.invoke(Unknown Source)
>...at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoMetaMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:251)
>...at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.call(PogoMetaMethodSite.java:71)
>...at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
>...at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
>...at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:128)
>...at rundeck.controllers.ExecutionController.downloadOutput(ExecutionController.groovy:784)
>...at org.grails.core.DefaultGrailsControllerClass$MethodHandleInvoker.invoke(DefaultGrailsControllerClass.java:223)
>...at org.grails.core.DefaultGrailsControllerClass.invoke(DefaultGrailsControllerClass.java:188)
>...at org.grails.web.mapping.mvc.UrlMappingsInfoHandlerAdapter.handle(UrlMappingsInfoHandlerAdapter.groovy:90)
>...at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
>...... 107 common frames omitted
Caused by: java.lang.ClassNotFoundException: javax.servlet.WriteListener
>...at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1858)
>...at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1701)
>...... 152 common frames omitted
sjrd218 commented 5 years ago

@danduff Can you post the full stacktrace so we can get the exact context for this call?

danduff commented 5 years ago

@sjrd218 I've updated original post. Full stack:

2019-02-13 14:44:13.293 ERROR --- [io-8080-exec-20] StackTrace                               : Full Stack Trace:

org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: javax/servlet/WriteListener
>...at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)
>...at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
>...at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
>...at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
>...at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
>...at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
>...at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
>...at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
>...at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>...at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
>...at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>...at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>...at org.apache.catalina.filters.RequestDumperFilter.doFilter(RequestDumperFilter.java:203)
>...at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>...at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)                                                                                                                                                                                                                            
>...at org.apache.catalina.filters.ExpiresFilter.doFilter(ExpiresFilter.java:1201)
>...at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>...at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>...at eu.fidessa.web.NoCacheFilter.doFilter(NoCacheFilter.java:51)
>...at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>...at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>...at org.springframework.security.web.jaasapi.JaasApiIntegrationFilter$1.run(JaasApiIntegrationFilter.java:96)
>...at java.security.AccessController.doPrivileged(Native Method)
>...at javax.security.auth.Subject.doAs(Subject.java:422)
>...at org.springframework.security.web.jaasapi.JaasApiIntegrationFilter.doFilter(JaasApiIntegrationFilter.java:105)
>...at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>...at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>...at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55)
>...at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
>...at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>...at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>...at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:111)
>...at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
>...at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>...at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>...at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317)
>...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:331)
>...at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114)
>...at grails.plugin.springsecurity.web.UpdateRequestContextHolderExceptionTranslationFilter.doFilter(UpdateRequestContextHolderExceptionTranslationFilter.groovy:64)
>...at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
>...at grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter.doFilter(GrailsAnonymousAuthenticationFilter.groovy:54)
>...at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
>...at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:158)
>...at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
>...at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)
>...at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
>...at org.springframework.security.web.jaasapi.JaasApiIntegrationFilter$1.run(JaasApiIntegrationFilter.java:96)
>...at java.security.AccessController.doPrivileged(Native Method)
>...at javax.security.auth.Subject.doAs(Subject.java:422)
>...at org.springframework.security.web.jaasapi.JaasApiIntegrationFilter.doFilter(JaasApiIntegrationFilter.java:105)
>...at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
>...at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)
>...at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
>...at grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter.doFilter(MutableLogoutFilter.groovy:64)
>...at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
>...at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
>...at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
>...at grails.plugin.springsecurity.web.SecurityRequestHolderFilter.doFilter(SecurityRequestHolderFilter.groovy:58)
>...at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
>...at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214)
>...at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177)
>...at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>...at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>...at org.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:77)
>...at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
>...at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>...at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>...at org.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:67)
>...at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
>...at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>...at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>...at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
>...at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
>...at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>...at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>...at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:96)
>...at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
>...at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>...at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>...at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:103)
>...at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
>...at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>...at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>...at org.springframework.boot.web.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:130)
>...at org.springframework.boot.web.support.ErrorPageFilter.access$000(ErrorPageFilter.java:66)
>...at org.springframework.boot.web.support.ErrorPageFilter$1.doFilterInternal(ErrorPageFilter.java:105)
>...at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
>...at org.springframework.boot.web.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:123)
>...at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>...at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>...at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
>...at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
>...at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
>...at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
>...at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
>...at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
>...at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
>...at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:436)
>...at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078)
>...at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
>...at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1749)
>...at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1708)
>...at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>...at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>...at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
>...at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NoClassDefFoundError: javax/servlet/WriteListener
>...at java.lang.Class.getDeclaredMethods0(Native Method)
>...at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
>...at java.lang.Class.privateGetPublicMethods(Class.java:2902)
>...at java.lang.Class.getMethods(Class.java:1615)
>...at java.beans.Introspector.getPublicDeclaredMethods(Introspector.java:1336)
>...at java.beans.Introspector.getTargetMethodInfo(Introspector.java:1197)
>...at java.beans.Introspector.getBeanInfo(Introspector.java:426)
>...at java.beans.Introspector.getBeanInfo(Introspector.java:173)
>...at groovy.lang.MetaClassImpl$15.run(MetaClassImpl.java:3328)
>...at java.security.AccessController.doPrivileged(Native Method)
>...at groovy.lang.MetaClassImpl.addProperties(MetaClassImpl.java:3326)
>...at groovy.lang.MetaClassImpl.initialize(MetaClassImpl.java:3303)
>...at org.codehaus.groovy.reflection.ClassInfo.getMetaClassUnderLock(ClassInfo.java:289)
>...at org.codehaus.groovy.reflection.ClassInfo.getMetaClass(ClassInfo.java:331)
>...at org.codehaus.groovy.reflection.ClassInfo.getMetaClass(ClassInfo.java:341)
>...at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.getMetaClass(MetaClassRegistryImpl.java:281)
>...at org.codehaus.groovy.runtime.InvokerHelper.getMetaClass(InvokerHelper.java:901)
>...at org.codehaus.groovy.runtime.callsite.CallSiteArray.createPojoSite(CallSiteArray.java:124)
>...at org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallSite(CallSiteArray.java:165)
>...at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
>...at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
>...at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:128)
>...at rundeck.controllers.ExecutionController$_downloadOutput_closure28.doCall(ExecutionController.groovy:795)
>...at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>...at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>...at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>...at java.lang.reflect.Method.invoke(Method.java:498)
>...at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:98)
>...at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)                                                                                                                                                                                                                                                           
>...at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:264)
>...at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034)
>...at groovy.lang.Closure.call(Closure.java:418)
>...at groovy.lang.Closure.call(Closure.java:434)
>...at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2125)
>...at org.codehaus.groovy.runtime.dgm$162.invoke(Unknown Source)
>...at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoMetaMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:251)
>...at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.call(PogoMetaMethodSite.java:71)
>...at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
>...at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
>...at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:128)
>...at rundeck.controllers.ExecutionController.downloadOutput(ExecutionController.groovy:784)
>...at org.grails.core.DefaultGrailsControllerClass$MethodHandleInvoker.invoke(DefaultGrailsControllerClass.java:223)
>...at org.grails.core.DefaultGrailsControllerClass.invoke(DefaultGrailsControllerClass.java:188)
>...at org.grails.web.mapping.mvc.UrlMappingsInfoHandlerAdapter.handle(UrlMappingsInfoHandlerAdapter.groovy:90)
>...at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
>...... 107 common frames omitted
Caused by: java.lang.ClassNotFoundException: javax.servlet.WriteListener
>...at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1858)
>...at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1701)
>...... 152 common frames omitted

Thanks