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
>
>

Reply via email to