我有一个J2EE Web应用程序,它将Apache Axis SOAP客户端代理实例化为Spring bean。
当我第一次将应用程序部署到Glassfish 3服务器时,它会成功。但是,如果我取消部署并重新部署应用程序,我会收到以下错误(在Spring堆栈跟踪的底部):
Instantiation of bean failed; nested exception is
org.springframework.beans.factory.BeanDefinitionStoreException: Factory method
[com.foo.bar.FooServicePortType com.foo.bar.config.ApplicationConfig.backendService()] threw exception;
nested exception is java.lang.RuntimeException:
java.lang.IllegalStateException: WEB9031: WebappClassLoader unable to load resource
[META-INF/services/org.apache.axis.EngineConfigurationFactory],
because it has not yet been started, or was already stopped
如果我重新启动域并重新部署,它会再次成功。
为什么会发生这种情况?
答案 0 :(得分:1)
这是由Axis库中的类加载器泄漏引起的。最简单的解决方法是将Axis jar部署到应用程序本身,而不是作为共享域库的一部分。