Thanks Chris! That works for me now. Only issue I have left is failing to compile/validate JSP.
Caused by: java.lang.NullPointerException > > at org.apache.jasper.compiler.Validator$ValidateVisitor.<init>( > Validator.java:527) ~[jasper.jar:8.5.89] > > at org.apache.jasper.compiler.Validator.validateExDirectives( > Validator.java:1869) ~[jasper.jar:8.5.89] > > at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:221) > ~[jasper.jar:8.5.89] > > at org.apache.jasper.compiler.Compiler.compile(Compiler.java:375) > ~[jasper.jar:8.5.89] > > at org.apache.jasper.compiler.Compiler.compile(Compiler.java:351) > ~[jasper.jar:8.5.89] > > at org.apache.jasper.compiler.Compiler.compile(Compiler.java:335) > ~[jasper.jar:8.5.89] > > at org.apache.jasper.JspCompilationContext.compile( > JspCompilationContext.java:597) ~[jasper.jar:8.5.89] > > at org.apache.jasper.servlet.JspServletWrapper.service( > JspServletWrapper.java:398) ~[jasper.jar:8.5.89] > > at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:383) > ~[jasper.jar:8.5.89] > > at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:331) > ~[jasper.jar:8.5.89] > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:583) > ~[servlet-api.jar:?] > > at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( > ApplicationFilterChain.java:212) ~[catalina.jar:8.5.89] > > at org.apache.catalina.core.ApplicationFilterChain.doFilter( > ApplicationFilterChain.java:156) ~[catalina.jar:8.5.89] > > at > com.centrify.platform.service.analytics.filter.GlobalAttributeFilter.doFilter( > GlobalAttributeFilter.java:41) > ~[com.centrify.platform.service.analytics/:?] > > at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate( > DelegatingFilterProxy.java:358) > ~[spring-web-5.1.20.RELEASE.jar:5.1.20.RELEASE] > > at org.springframework.web.filter.DelegatingFilterProxy.doFilter( > DelegatingFilterProxy.java:271) > ~[spring-web-5.1.20.RELEASE.jar:5.1.20.RELEASE] > > at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( > ApplicationFilterChain.java:181) ~[catalina.jar:8.5.89] > > at org.apache.catalina.core.ApplicationFilterChain.doFilter( > ApplicationFilterChain.java:156) ~[catalina.jar:8.5.89] > > at org.cg.services.core.filter.ExecutionTimeFilter.doFilterInternal( > ExecutionTimeFilter.java:29) ~[org.cg.services.core/:?] > > at org.springframework.web.filter.OncePerRequestFilter.doFilter( > OncePerRequestFilter.java:119) > ~[spring-web-5.1.20.RELEASE.jar:5.1.20.RELEASE] > > at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate( > DelegatingFilterProxy.java:358) > ~[spring-web-5.1.20.RELEASE.jar:5.1.20.RELEASE] > > at org.springframework.web.filter.DelegatingFilterProxy.doFilter( > DelegatingFilterProxy.java:271) > ~[spring-web-5.1.20.RELEASE.jar:5.1.20.RELEASE] > > at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( > ApplicationFilterChain.java:181) ~[catalina.jar:8.5.89] > > at org.apache.catalina.core.ApplicationFilterChain.doFilter( > ApplicationFilterChain.java:156) ~[catalina.jar:8.5.89] > > at > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter( > FilterChainProxy.java:317) > ~[spring-security-web-4.1.0.RELEASE.jar:4.1.0.RELEASE] > > at > org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke( > FilterSecurityInterceptor.java:127) > ~[spring-security-web-4.1.0.RELEASE.jar:4.1.0.RELEASE] > > at > org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter( > FilterSecurityInterceptor.java:91) > ~[spring-security-web-4.1.0.RELEASE.jar:4.1.0.RELEASE] > > at > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter( > FilterChainProxy.java:331) > ~[spring-security-web-4.1.0.RELEASE.jar:4.1.0.RELEASE] > > at > org.springframework.security.web.access.ExceptionTranslationFilter.doFilter( > ExceptionTranslationFilter.java:115) > ~[spring-security-web-4.1.0.RELEASE.jar:4.1.0.RELEASE] > > at > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter( > FilterChainProxy.java:331) > ~[spring-security-web-4.1.0.RELEASE.jar:4.1.0.RELEASE] > > at > org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter( > AnonymousAuthenticationFilter.java:112) > ~[spring-security-web-4.1.0.RELEASE.jar:4.1.0.RELEASE] > > at > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter( > FilterChainProxy.java:331) > ~[spring-security-web-4.1.0.RELEASE.jar:4.1.0.RELEASE] > > at > org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter( > SecurityContextHolderAwareRequestFilter.java:169) > ~[spring-security-web-4.1.0.RELEASE.jar:4.1.0.RELEASE] > > at > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter( > FilterChainProxy.java:331) > ~[spring-security-web-4.1.0.RELEASE.jar:4.1.0.RELEASE] > > at org.pac4j.springframework.security.web.SecurityFilter.lambda$doFilter$1( > SecurityFilter.java:52) ~[spring-security-pac4j-2.0.0.jar:?] > > at org.pac4j.core.engine.DefaultSecurityLogic.perform( > DefaultSecurityLogic.java:136) ~[pac4j-core-1.9.1.jar:?] > > ... 34 more > On Wed, May 3, 2023 at 9:07 AM Christopher Schultz < ch...@christopherschultz.net> wrote: > Jeremy, > > On 5/3/23 11:00, jeremyn...@gmail.com wrote: > > Sure Ill run it. > > https://people.apache.org/~schultz/binaries/apache-tomcat-8.5.89-dev.tar.gz > > Please note that this is not an official Tomcat release (it's current > 8.5.x HEAD plus a tiny patch to ignore any null resources obtained from > the parent ClassLoader). No warranty, you accept all responsibility, etc. > > -chris > > >> On May 3, 2023, at 7:05 AM, Christopher Schultz < > ch...@christopherschultz.net> wrote: > >> > >> > >> Jeremy, > >> > >>> On 5/2/23 22:27, Jeremy Nguyen wrote: > >>> I was able to retrieve some logs that might shed some insight on the > >>> parent classloader when running 8.5.87. I'll be frank that I don't > quite > >>> understand the mechanics of classloaders in Java. > >>> LogFactory from > >>>> org.eclipse.osgi.internal.loader.EquinoxClassLoader@1628551735] > [LOOKUP] > >>>> LogFactory implementation requested for the first time for context > >>>> classloader > org.apache.catalina.loader.ParallelWebappClassLoader@1204822967 > >>>> > >>>> [LogFactory from > >>>> org.eclipse.osgi.internal.loader.EquinoxClassLoader@1628551735] > [LOOKUP] > >>>> org.apache.catalina.loader.ParallelWebappClassLoader@1204822967 == > >>>> 'ParallelWebappClassLoader > >>>> > >>>> context: cg > >>>> > >>>> delegate: false > >>>> > >>>> ----------> Parent Classloader: > >>>> > >>>> org.cg.dao.webcontainer.tomcat.WebAppClassLoader@b887730 > >> > >> I wonder if org.cg.dao.webcontainer.tomcat.WebAppClassLoader has a bug > where getResources() can return null. > >> > >> That violates the contract of ClassLoader.getResources, but since it's > /possible/ maybe Tomcat can work around it by simply ignoring the empty > Enumeration. If I give you an unofficial build, can you try it? > >> > >> -chris > >> > >>>> [LogFactory from > >>>> org.eclipse.osgi.internal.loader.EquinoxClassLoader@1628551735] > [LOOKUP] > >>>> ClassLoader > >>>> tree:org.apache.catalina.loader.ParallelWebappClassLoader@1204822967 > --> > >>>> org.cg.dao.webcontainer.tomcat.WebAppClassLoader@193492784 --> > >>>> jdk.internal.loader.ClassLoaders$AppClassLoader@2085857771 (SYSTEM) > --> > >>>> jdk.internal.loader.ClassLoaders$PlatformClassLoader@105966264 --> > BOOT > >>>> > >>>> May 02, 2023 7:23:21 PM org.apache.catalina.core.StandardContext > >>>> listenerStart > >>>> > >>>> SEVERE: Exception sending context initialized event to listener > instance > >>>> of class [org.springframework.web.context.ContextLoaderListener] > >>>> > >>>> java.lang.NullPointerException > >>>> > >>>> at > >>>> > org.apache.catalina.loader.WebappClassLoaderBase$CombinedEnumeration.inc( > >>>> WebappClassLoaderBase.java:2775) > >>>> > >>>> at > >>>> > org.apache.catalina.loader.WebappClassLoaderBase$CombinedEnumeration.hasMoreElements( > >>>> WebappClassLoaderBase.java:2760) > >>>> > >>>> at org.apache.commons.logging.LogFactory.getConfigurationFile( > >>>> LogFactory.java:1366) > >>>> > >>>> at > org.apache.commons.logging.LogFactory.getFactory(LogFactory.java:453) > >>>> > >>>> at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:655) > >>>> > >>>> at > org.springframework.web.context.ContextLoader.initWebApplicationContext( > >>>> ContextLoader.java:269) > >>>> > >>>> at > >>>> > org.springframework.web.context.ContextLoaderListener.contextInitialized( > >>>> ContextLoaderListener.java:103) > >>>> > >>>> at org.apache.catalina.core.StandardContext.listenerStart( > >>>> StandardContext.java:4492) > >>>> > >>>> at org.apache.catalina.core.StandardContext.startInternal( > >>>> StandardContext.java:4950) > >>>> > >>>> at > org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) > >>>> > >>>> at org.apache.catalina.core.ContainerBase.addChildInternal( > >>>> ContainerBase.java:711) > >>>> > >>>> at > org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:688) > >>>> > >>>> at > org.apache.catalina.core.StandardHost.addChild(StandardHost.java:661) > >>>> > >>>> at org.cg.dao.webcontainer.tomcat.TomcatWrapper.startWebApp( > >>>> TomcatWrapper.java:185) > >>>> > >>>> at org.cg.dao.webcontainer.tomcat.TomcatWrapper.prepareAllWebApps( > >>>> TomcatWrapper.java:140) > >>>> > >>>> at org.cg.dao.webcontainer.tomcat.TomcatWrapper.startServer( > >>>> TomcatWrapper.java:206) > >>>> > >>>> at > org.cg.dao.webcontainer.tomcat.Application.start(Application.java:30) > >>>> > >>>> at org.eclipse.equinox.internal.app.EclipseAppHandle.run( > >>>> EclipseAppHandle.java:203) > >>>> > >>>> at > >>>> > org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication( > >>>> EclipseAppLauncher.java:136) > >>>> > >>>> at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start( > >>>> EclipseAppLauncher.java:104) > >>>> > >>>> at org.eclipse.core.runtime.adaptor.EclipseStarter.run( > >>>> EclipseStarter.java:402) > >>>> > >>>> at org.eclipse.core.runtime.adaptor.EclipseStarter.run( > >>>> EclipseStarter.java:255) > >>>> > >>>> at > java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native > >>>> Method) > >>>> > >>>> at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke( > >>>> NativeMethodAccessorImpl.java:62) > >>>> > >>>> at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke( > >>>> DelegatingMethodAccessorImpl.java:43) > >>>> > >>>> at java.base/java.lang.reflect.Method.invoke(Method.java:566) > >>>> > >>>> at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659) > >>>> > >>>> at org.eclipse.equinox.launcher.Main.basicRun(Main.java:596) > >>>> > >>>> at org.eclipse.equinox.launcher.Main.run(Main.java:1467) > >>>> > >>>> at org.eclipse.equinox.launcher.Main.main(Main.java:1440) > >>>> > >>>> On Tue, May 2, 2023 at 6:18 PM Jeremy Nguyen <jeremyn...@gmail.com> > wrote: > >>>> I picked 8.5.34 because 8.5.35 has that code change while 34 > doesn't. > >>>> > https://github.com/apache/tomcat/blob/8.5.35/java/org/apache/catalina/loader/WebappClassLoaderBase.java#L1050 > >>>> > >>>> I'll do some debugging for the classloader soon. I'm still trying to > get > >>>> my application running. I'm wrestling with the following error at > runtime. > >>>> > >>>> Caused by: org.apache.jasper.JasperException: Unable to compile class > for > >>>>> JSP > >>>>> at > >>>>> > org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:610) > >>>>> ~[jasper.jar:8.5.34] > >>>>> at > >>>>> > org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:382) > >>>>> ~[jasper.jar:8.5.34] > >>>>> at > >>>>> > org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386) > >>>>> ~[jasper.jar:8.5.34] > >>>>> at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330) > >>>>> ~[jasper.jar:8.5.34] > >>>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) > >>>>> ~[servlet-api.jar:?] > >>>>> at > >>>>> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) > >>>>> ~[catalina.jar:8.5.34] > >>>>> at > >>>>> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) > >>>>> ~[catalina.jar:8.5.34] > >>>>> at > >>>>> > com.centrify.platform.service.analytics.filter.GlobalAttributeFilter.doFilter(GlobalAttributeFilter.java:41) > >>>>> ~[com.centrify.platform.service.analytics/:?] > >>>>> at > >>>>> > org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358) > >>>>> ~[spring-web-5.1.20.RELEASE.jar:5.1.20.RELEASE] > >>>>> at > >>>>> > org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271) > >>>>> ~[spring-web-5.1.20.RELEASE.jar:5.1.20.RELEASE] > >>>>> at > >>>>> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) > >>>>> ~[catalina.jar:8.5.34] > >>>>> at > >>>>> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) > >>>>> ~[catalina.jar:8.5.34] > >>>>> at > >>>>> > org.cg.services.core.filter.ExecutionTimeFilter.doFilterInternal(ExecutionTimeFilter.java:29) > >>>>> ~[org.cg.services.core/:?] > >>>>> at > >>>>> > org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) > >>>>> ~[spring-web-5.1.20.RELEASE.jar:5.1.20.RELEASE] > >>>>> at > >>>>> > org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358) > >>>>> ~[spring-web-5.1.20.RELEASE.jar:5.1.20.RELEASE] > >>>>> at > >>>>> > org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271) > >>>>> ~[spring-web-5.1.20.RELEASE.jar:5.1.20.RELEASE] > >>>>> at > >>>>> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) > >>>>> ~[catalina.jar:8.5.34] > >>>>> at > >>>>> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) > >>>>> ~[catalina.jar:8.5.34] > >>>>> at > >>>>> > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317) > >>>>> ~[spring-security-web-4.1.0.RELEASE.jar:4.1.0.RELEASE] > >>>>> at > >>>>> > org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127) > >>>>> ~[spring-security-web-4.1.0.RELEASE.jar:4.1.0.RELEASE] > >>>>> at > >>>>> > org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91) > >>>>> ~[spring-security-web-4.1.0.RELEASE.jar:4.1.0.RELEASE] > >>>>> at > >>>>> > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) > >>>>> ~[spring-security-web-4.1.0.RELEASE.jar:4.1.0.RELEASE] > >>>>> at > >>>>> > org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:115) > >>>>> ~[spring-security-web-4.1.0.RELEASE.jar:4.1.0.RELEASE] > >>>>> at > >>>>> > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) > >>>>> ~[spring-security-web-4.1.0.RELEASE.jar:4.1.0.RELEASE] > >>>>> at > >>>>> > org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:112) > >>>>> ~[spring-security-web-4.1.0.RELEASE.jar:4.1.0.RELEASE] > >>>>> at > >>>>> > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) > >>>>> ~[spring-security-web-4.1.0.RELEASE.jar:4.1.0.RELEASE] > >>>>> at > >>>>> > org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:169) > >>>>> ~[spring-security-web-4.1.0.RELEASE.jar:4.1.0.RELEASE] > >>>>> at > >>>>> > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) > >>>>> ~[spring-security-web-4.1.0.RELEASE.jar:4.1.0.RELEASE] > >>>>> at > >>>>> > org.pac4j.springframework.security.web.SecurityFilter.lambda$doFilter$1(SecurityFilter.java:52) > >>>>> ~[spring-security-pac4j-2.0.0.jar:?] > >>>>> at > >>>>> > org.pac4j.core.engine.DefaultSecurityLogic.perform(DefaultSecurityLogic.java:136) > >>>>> ~[pac4j-core-1.9.1.jar:?] > >>>>> ... 34 more > >>>>> Caused by: java.lang.NullPointerException > >>>>> at > >>>>> > org.apache.jasper.compiler.Validator$ValidateVisitor.<init>(Validator.java:516) > >>>>> ~[jasper.jar:8.5.34] > >>>>> at > >>>>> > org.apache.jasper.compiler.Validator.validateExDirectives(Validator.java:1854) > >>>>> ~[jasper.jar:8.5.34] > >>>>> at > org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:220) > >>>>> ~[jasper.jar:8.5.34] > >>>>> at org.apache.jasper.compiler.Compiler.compile(Compiler.java:373) > >>>>> ~[jasper.jar:8.5.34] > >>>>> at org.apache.jasper.compiler.Compiler.compile(Compiler.java:350) > >>>>> ~[jasper.jar:8.5.34] > >>>>> at org.apache.jasper.compiler.Compiler.compile(Compiler.java:334) > >>>>> ~[jasper.jar:8.5.34] > >>>>> at > >>>>> > org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:595) > >>>>> ~[jasper.jar:8.5.34] > >>>>> at > >>>>> > org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:382) > >>>>> ~[jasper.jar:8.5.34] > >>>>> at > >>>>> > org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386) > >>>>> ~[jasper.jar:8.5.34] > >>>>> at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330) > >>>>> ~[jasper.jar:8.5.34] > >>>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) > >>>>> ~[servlet-api.jar:?] > >>>>> at > >>>>> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) > >>>>> ~[catalina.jar:8.5.34] > >>>>> at > >>>>> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) > >>>>> ~[catalina.jar:8.5.34] > >>>>> at > >>>>> > com.centrify.platform.service.analytics.filter.GlobalAttributeFilter.doFilter(GlobalAttributeFilter.java:41) > >>>>> ~[com.centrify.platform.service.analytics/:?] > >>>>> at > >>>>> > org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358) > >>>>> ~[spring-web-5.1.20.RELEASE.jar:5.1.20.RELEASE] > >>>>> at > >>>>> > org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271) > >>>>> ~[spring-web-5.1.20.RELEASE.jar:5.1.20.RELEASE] > >>>>> at > >>>>> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) > >>>>> ~[catalina.jar:8.5.34] > >>>>> at > >>>>> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) > >>>>> ~[catalina.jar:8.5.34] > >>>>> at > >>>>> > org.cg.services.core.filter.ExecutionTimeFilter.doFilterInternal(ExecutionTimeFilter.java:29) > >>>>> ~[org.cg.services.core/:?] > >>>>> at > >>>>> > org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) > >>>>> ~[spring-web-5.1.20.RELEASE.jar:5.1.20.RELEASE] > >>>>> at > >>>>> > org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358) > >>>>> ~[spring-web-5.1.20.RELEASE.jar:5.1.20.RELEASE] > >>>>> at > >>>>> > org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271) > >>>>> ~[spring-web-5.1.20.RELEASE.jar:5.1.20.RELEASE] > >>>>> at > >>>>> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) > >>>>> ~[catalina.jar:8.5.34] > >>>>> at > >>>>> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) > >>>>> ~[catalina.jar:8.5.34] > >>>>> at > >>>>> > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317) > >>>>> ~[spring-security-web-4.1.0.RELEASE.jar:4.1.0.RELEASE] > >>>>> at > >>>>> > org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127) > >>>>> ~[spring-security-web-4.1.0.RELEASE.jar:4.1.0.RELEASE] > >>>>> at > >>>>> > org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91) > >>>>> ~[spring-security-web-4.1.0.RELEASE.jar:4.1.0.RELEASE] > >>>>> at > >>>>> > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) > >>>>> ~[spring-security-web-4.1.0.RELEASE.jar:4.1.0.RELEASE] > >>>>> at > >>>>> > org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:115) > >>>>> ~[spring-security-web-4.1.0.RELEASE.jar:4.1.0.RELEASE] > >>>>> at > >>>>> > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) > >>>>> ~[spring-security-web-4.1.0.RELEASE.jar:4.1.0.RELEASE] > >>>>> at > >>>>> > org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:112) > >>>>> ~[spring-security-web-4.1.0.RELEASE.jar:4.1.0.RELEASE] > >>>>> at > >>>>> > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) > >>>>> ~[spring-security-web-4.1.0.RELEASE.jar:4.1.0.RELEASE] > >>>>> at > >>>>> > org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:169) > >>>>> ~[spring-security-web-4.1.0.RELEASE.jar:4.1.0.RELEASE] > >>>>> at > >>>>> > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) > >>>>> ~[spring-security-web-4.1.0.RELEASE.jar:4.1.0.RELEASE] > >>>>> at > >>>>> > org.pac4j.springframework.security.web.SecurityFilter.lambda$doFilter$1(SecurityFilter.java:52) > >>>>> ~[spring-security-pac4j-2.0.0.jar:?] > >>>>> at > >>>>> > org.pac4j.core.engine.DefaultSecurityLogic.perform(DefaultSecurityLogic.java:136) > >>>>> ~[pac4j-core-1.9.1.jar:?] > >>>>> ... 34 more > >>>> > >>>> > >>>> On Tue, May 2, 2023 at 5:23 AM Christopher Schultz < > >>>> ch...@christopherschultz.net> wrote: > >>>> > >>>>> Jeremy, > >>>>> > >>>>> On 5/1/23 17:46, Jeremy Nguyen wrote: > >>>>>> I noticed this change was introduced: > >>>>>> https://bz.apache.org/bugzilla/show_bug.cgi?id=62868 > >>>>>> > >>>>> > https://github.com/apache/tomcat/blame/8.5.x/java/org/apache/catalina/loader/WebappClassLoaderBase.java#L1122 > >>>>>> > >>>>>> I'll try running 8.5.34 and report back. > >>>>> > >>>>> Wow that's ancient. What made you pick 8.5.34? That change should > have > >>>>> gone into 8.5.36. Can you try both 8.5.35 and 8.5.36 and let us know > >>>>> which (if either) works? > >>>>> > >>>>> I wonder if the parent ClassLoader is violating the contract for > >>>>> getResources(). > >>>>> > >>>>> Jeremy, can you throw some code into your application that runs early > >>>>> (like in org.cg.dao.webcontainer.tomcat.TomcatWrapper.startWebApp) > that > >>>>> reports the class name of thew parent ClassLoader for the > >>>>> WebappClassLoader being used for the webapp? > >>>>> > >>>>> If you aren't able to do that -- and since you are running from > Eclipse > >>>>> -- try putting a breakpoint in WebappClassLoaderBase.getResources > >>>>> and just inspecting the situation at that point -- you should be > able > >>>>> to see what the parent ClassLoader is, and even see what > >>>>> getParent().getResources() returns. > >>>>> > >>>>> -chris > >>>>> > >>>>>> On Mon, May 1, 2023 at 2:12 PM Rob Sargent <rsarg...@xmission.com> > >>>>> wrote: > >>>>>> > >>>>>>> > >>>>>>> > >>>>>>> On 5/1/23 14:36, Christopher Schultz wrote: > >>>>>>>> Jeremy, > >>>>>>>> > >>>>>>>> On 5/1/23 14:22, Jeremy Nguyen wrote: > >>>>>>>>> I'm trying to upgrade Tomcat 8 to 8.5 and I'm getting a > >>>>>>>>> nullpointerexception within > >>>>>>>>> WebappClassLoaderBase.CombinedEnumeration.inc. > >>>>>>>>> It seems to occur when it's trying to initialize commons-logging > >>>>>>>>> LogFactory > >>>>>>>>> for any class specified in Web.xml, and it's calling > >>>>>>>>> getResources("commons-logging.properties") which I never had. Is > it > >>>>>>>>> required in 8.5? Even if I put it in conf/, it's not being > picked up. > >>>>>>>>> > >>>>>>>>> We're running Tomcat using a wrapper and it's erroring out here: > >>>>>>>>> > >>>>>>> > >>>>> > https://github.com/CodeGerm/osgi-server/blob/master/plugins/org.cg.dao.webcontainer/src/org/cg/dao/webcontainer/tomcat/TomcatWrapper.java#L185 > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> I posted my web.xml and error trace here as well: > >>>>>>>>> > >>>>>>> > >>>>> > https://stackoverflow.com/questions/76139108/web-xml-configuration-is-broken-when-upgrading-to-tomcat-8-5-and-spring-5-1 > >>>>>>>>> > >>>>>>>> > >>>>>>>> I have no idea how this is throwing an NPE. The only pointer being > >>>>>>>> dereferenced by the inc() method is "sources": > >>>>>>>> > >>>>>>>> 2773 private boolean inc() { > >>>>>>>> 2774 while (index < sources.length) { > >>>>>>>> 2775 if (sources[index].hasMoreElements()) { > >>>>>>>> 2776 return true; > >>>>>>>> 2777 } > >>>>>>>> 2778 index++; > >>>>>>>> 2779 } > >>>>>>>> 2780 return false; > >>>>>>>> 2781 } > >>>>>>>> > >>>>>>>> That member (sources) is instantiated in the one-and-only-one > >>>>>>>> constructor: > >>>>>>>> > >>>>>>>> CombinedEnumeration(Enumeration<URL> enum1, > Enumeration<URL> > >>>>>>>> enum2) { > >>>>>>>> @SuppressWarnings("unchecked") > >>>>>>>> Enumeration<URL>[] sources = new Enumeration[] { > enum1, > >>>>>>>> enum2 }; > >>>>>>>> this.sources = sources; > >>>>>>>> } > >>>>>>>> > >>>>>>>> Also weird is that this throws NPE on line 2775 and not 2774. I > can't > >>>>>>>> explain how line 2775 could throw an NPE if line 2774 did not. > >>>>>>>> > >>>>>>>>> :/ > >>>>>>> > >>>>>>> Is the null pointer in the index'th position of source, not source > >>>>> itself? > >>>>>>> > >>>>>>>> > >>>>>>>> I use Tomcat 8.5.x and I have never had a > commons-logging.properties > >>>>>>>> file, and I use some components which are surely causing > >>>>>>>> commons-logging LogFactory to initialize, and I've never seen this > >>>>>>>> problem before. > >>>>>>>> > >>>>>>>> -chris > >>>>>>>> > >>>>>>>> > --------------------------------------------------------------------- > >>>>>>>> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > >>>>>>>> For additional commands, e-mail: users-h...@tomcat.apache.org > >>>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > --------------------------------------------------------------------- > >>>>>>> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > >>>>>>> For additional commands, e-mail: users-h...@tomcat.apache.org > >>>>>>> > >>>>>>> > >>>>>> > >>>>> > >>>>> --------------------------------------------------------------------- > >>>>> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > >>>>> For additional commands, e-mail: users-h...@tomcat.apache.org > >>>>> > >>>>> > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > >> For additional commands, e-mail: users-h...@tomcat.apache.org > >> > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > > For additional commands, e-mail: users-h...@tomcat.apache.org > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > For additional commands, e-mail: users-h...@tomcat.apache.org > >