On 23/04/2025 16:10, Simon Arame wrote:
<snip/>
What java method call should I be searching for in libraries source code ?
It isn't going to be that simple. You'll need to do something like.
1. Deploy the application
2. Undeploy the application
3. Force GC (with a profiler)
4. Take a memory snapshot (with a profiler)
5. Look for instances of the web application class loader
6. Find the one with the state STOPPED or similar
7. Trace the GC roots
8. Figure out what is creating those reference chains
9. Figure out what you need to do to destroy each reference chain when
the application shuts down and/or cause each reference chain to be
created to the common class loader rather than the web application
specific one.
If you can provide a minimal web application that reproduces the issue,
we can help with the above.
Mark
Simon
On Tue, Apr 22, 2025 at 12:02 PM Mark Thomas <ma...@apache.org> wrote:
On 22/04/2025 16:44, Simon Arame wrote:
<snip/>
What is strange is that although it says "this web application instance
has
been stopped already", the web application is still running, end users
are
still receiving 200 OKs from the web application.
Any other web applications running on that Tomcat instance?
Has the web application with the issue ever been restarted / reloaded?
We are not sure what causes this because it does not always happen, it is
"intermittent". The SoapBindingStub is called from a JSP which is aimed
to
simulate a call to a Soap service as if it was coming from outside of
this
app.
So the jsp that made the call received this 500 error from the Soap
service
but this is unusual.
What you are seeing is the web application attempting to use classes
that were loaded by a different/"older version of the current" web
application.
This sort of thing can happen when a web application (or a library is
uses) registers something at the JVM level which then becomes a global
resource rather than a web application specific resource.
The trick to fixing this is figuring out what code is performing this
JVM level registration and moving that code from the web application to
$CATALINA_BASE/lib
If it is a library the application is using, this is relatively simple.
If it is the application then things get trickier.
Mark
---------------------------------------------------------------------
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