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