You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by Arseny <fo...@mail.ru> on 2008/04/08 15:51:38 UTC

Axis 1.4 + Embedded Tomcat 5.5 trouble

Hello!
I`ve got a problem with using axis 1.4 on embedded tomcat.
The problem is that if I restart stop with
axis web app being autodeployed, I get the following exception:

org.apache.catalina.loader.WebappClassLoader -  : Illegal access: this 
web application instance has been stopped already.  Could not load 
META-INF/services/org.apache.axis.EngineConfigurationFactory.  The 
eventual following stack trace is caused by an error thrown for 
debugging purposes as well as to attempt to terminate the thread which 
caused the illegal access, and has no functional impact.
org.apache.catalina.loader.WebappClassLoader -  : Illegal access: this 
web application instance has been stopped already.  Could not load 
org/apache/axis/configuration/EngineConfigurationFactoryServlet.class.  
The eventual following stack trace is caused by an error thrown for 
debugging purposes as well as to attempt to terminate the thread which 
caused the illegal access, and has no functional impact.
org.apache.catalina.loader.WebappClassLoader -  : Illegal access: this 
web application instance has been stopped already.  Could not load 
org.apache.axis.configuration.EngineConfigurationFactoryServlet.  The 
eventual following stack trace is caused by an error thrown for 
debugging purposes as well as to attempt to terminate the thread which 
caused the illegal access, and has no functional impact.
java.lang.IllegalStateException
    at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1249)
    at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1209)
    at 
org.apache.commons.discovery.ResourceClass$1.run(ResourceClass.java:77)
    at java.security.AccessController.doPrivileged(Native Method)
    at 
org.apache.commons.discovery.ResourceClass.loadClass(ResourceClass.java:73)
    at 
org.apache.axis.configuration.EngineConfigurationFactoryFinder$1.run(EngineConfigurationFactoryFinder.java:122)
    at java.security.AccessController.doPrivileged(Native Method)
    at 
org.apache.axis.configuration.EngineConfigurationFactoryFinder.newFactory(EngineConfigurationFactoryFinder.java:113)
    at 
org.apache.axis.transport.http.AxisServletBase.getEngineEnvironment(AxisServletBase.java:273)
    at 
org.apache.axis.transport.http.AxisServletBase.getEngine(AxisServletBase.java:172)
    at 
org.apache.axis.transport.http.AxisServletBase.getOption(AxisServletBase.java:396)
    at 
org.apache.axis.transport.http.AxisServletBase.init(AxisServletBase.java:112)
    at javax.servlet.GenericServlet.init(GenericServlet.java:212)
    at 
org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1139)
    at 
org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:966)
    at 
org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3956)
    at 
org.apache.catalina.core.StandardContext.start(StandardContext.java:4230)
    at 
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760)
    at 
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544)

I looked through the sources and found out the problem:
When AxisServlet creates new EngineConfigurationFactory it searches for 
its implementation classes using classloaders taken from AxisProperties.
AxisProperties has a static list of them that is created at the first 
access and never updated.
At the same time, WebappClassLoader instance which is loaded in the list 
is tied with the application lifecycle and is throwing the mentioned
exception if it is tried to be used after the web application context 
was stopped.

I see several options to remove this exception:
1. Not to log this scaring exception with INFO in WebappClassLoader
2. Be able to reset (update?) the classloaders list in AxisProperties
3. Just set Logger priority for the WebappClassLoader class to WARN :) 
The option I chose






---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org