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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to