Hi,

I'm running tomcat 9.0.98 with jvm 1.8.0_432 on a Rocky LInux.

I've encountered this problem with Axis Soap library: the server throws an
exception, in the application log, a simple AxisFault: ( hostname and class
name changed for privacy reasons )

> ERROR - axisfaultexception
> AxisFault
>  faultCode: {
http://schemas.xmlsoap.org/soap/envelope/}Server.userException
>  faultSubcode:
>  faultString: java.lang.reflect.InvocationTargetException
>  faultActor:
>  faultNode:
>  faultDetail:
>         {http://xml.apache.org/axis/}hostname:myhostname.com

> java.lang.reflect.InvocationTargetException
>         at
org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
>         at
org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
>         at
org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
>         at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown
Source)
>         at
org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown
Source)
>         at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown
Source)
>         at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
Source)
>         at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
Source)
>         at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
Source)
>         at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
>         at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown
Source)
>         at
org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
>         at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source)
>         at
org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
>         at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
>         at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
>         at
org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
>         at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
>         at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
>         at org.apache.axis.client.Call.invoke(Call.java:2767)
>         at org.apache.axis.client.Call.invoke(Call.java:2443)
>         at org.apache.axis.client.Call.invoke(Call.java:2366)
>         at org.apache.axis.client.Call.invoke(Call.java:1812)
>         at my.app.SoapBindingStub.method(SoapBindingStub.java: ###)
>         at my...

But then I also see the following when I open the catalina.log

>22-Apr-2025 10:34:05.537 INFO [http-nio-8080-exec-17]
org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading
Illegal access: this web application instance has been stopped already.
Could not load
[org.apache.xerces.jaxp.datatype.XMLGregorianCalendarImpl$DaysInMonth]. The
following stack trace is thrown for debugging purposes as well as to
attempt to terminate the thread which caused the illegal access.
>        java.lang.IllegalStateException: Illegal access: this web
application instance has been stopped already. Could not load
[org.apache.xerces.jaxp.datatype.XMLGregorianCalendarImpl$DaysInMonth]. The
following stack trace is thrown for debugging purposes as well as to
attempt to terminate the thread which caused the illegal access.
>                at
org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1369)
>                at
org.apache.catalina.loader.WebappClassLoaderBase.checkStateForClassLoading(WebappClassLoaderBase.java:1357)
>                at
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1191)
>                at
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1158)
>                at
org.apache.xerces.jaxp.datatype.XMLGregorianCalendarImpl.maximumDayInMonthFor(Unknown
Source)
>                at
org.apache.xerces.jaxp.datatype.XMLGregorianCalendarImpl.isValid(Unknown
Source)
>                at
org.apache.xerces.jaxp.datatype.XMLGregorianCalendarImpl.<init>(Unknown
Source)
>                at
org.apache.xerces.jaxp.datatype.XMLGregorianCalendarImpl.createDateTime(Unknown
Source)
>                at
org.apache.xerces.jaxp.datatype.XMLGregorianCalendarImpl.<clinit>(Unknown
Source)
>                at
org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl.newXMLGregorianCalendar(Unknown
Source)
>                at
com.sun.xml.bind.DatatypeConverterImpl._parseDateTime(DatatypeConverterImpl.java:397)
>                at
com.sun.xml.bind.DatatypeConverterImpl.parseDateTime(DatatypeConverterImpl.java:392)
>                at
javax.xml.bind.DatatypeConverter.parseDateTime(DatatypeConverter.java:327)
>                at my.app.SoapFacade.method(SoapFacade.java: ###)


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.

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.

Simon

Reply via email to