2011-09-05 75 views
2

我在部署Axis 2 Web应用程序时遇到问题。我使用的是Jboss 4.2.0,它已经有一个使用Axis 2客户端的Web应用程序。我试图部署的这个Axis 2应用程序实际上是一个归档服务(扩展名为.aar),它放在Axis 2 Web应用程序的“services”文件夹中。后者然后使用蚂蚁生成器构建,生成的.war文件就是我正在部署的。现在,当我从Jboss的deploy文件夹中删除旧的应用程序时,我的新应用程序工作得很好。但是,当我再次重新部署旧的应用程序,从我的Jboss出现以下情况例外:Jboss中的Axis2.jar冲突

13:58:44,382 INFO [AxisServlet] org.apache.axis2.AxisFault: The system is attempting to engage a module that is not available: addressing 
13:58:44,383 ERROR [[/axis2]] Servlet /axis2 threw load() exception 
org.apache.axis2.AxisFault: The system is attempting to engage a module that is not available: addressing 
     at org.apache.axis2.engine.AxisConfiguration.engageModule(AxisConfiguration.java:464) 
     at org.apache.axis2.engine.AxisConfiguration.engageGlobalModules(AxisConfiguration.java:591) 
     at org.apache.axis2.deployment.DeploymentEngine.engageModules(DeploymentEngine.java:615) 
     at org.apache.axis2.deployment.WarBasedAxisConfigurator.engageGlobalModules(WarBasedAxisConfigurator.java:301) 
     at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:81) 
     at org.apache.axis2.transport.http.AxisServlet.initConfigContext(AxisServlet.java:516) 
     at org.apache.axis2.transport.http.AxisServlet.init(AxisServlet.java:436) 
     at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1161) 
     at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981) 
     at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4069) 
     at org.apache.catalina.core.StandardContext.start(StandardContext.java:4373) 
     at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:761) 
     at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:741) 
     at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:553) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:585) 
     at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:297) 
     at org.jboss.mx.server.RawDynamicInvoker.invoke(RawDynamicInvoker.java:164) 
     at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659) 
     at org.apache.catalina.core.StandardContext.init(StandardContext.java:5310) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:585) 
     at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:297) 
     at org.jboss.mx.server.RawDynamicInvoker.invoke(RawDynamicInvoker.java:164) 
     at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659) 
     at org.jboss.web.tomcat.service.TomcatDeployer.performDeployInternal(TomcatDeployer.java:301) 
     at org.jboss.web.tomcat.service.TomcatDeployer.performDeploy(TomcatDeployer.java:104) 
     at org.jboss.web.AbstractWebDeployer.start(AbstractWebDeployer.java:375) 
     at org.jboss.web.WebModule.startModule(WebModule.java:83) 
     at org.jboss.web.WebModule.startService(WebModule.java:61) 
     at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:289) 
     at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:245) 
     at sun.reflect.GeneratedMethodAccessor138.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:585) 
     at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155) 
     at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94) 
     at org.jboss.mx.server.Invocation.invoke(Invocation.java:86) 
     at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264) 
     at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659) 
     at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:978) 
     at $Proxy0.start(Unknown Source) 
     at org.jboss.system.ServiceController.start(ServiceController.java:417) 
     at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:585) 
     at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155) 
     at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94) 
     at org.jboss.mx.server.Invocation.invoke(Invocation.java:86) 
     at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264) 
     at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659) 
     at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210) 
     at $Proxy45.start(Unknown Source) 
     at org.jboss.web.AbstractWebContainer.start(AbstractWebContainer.java:466) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:585) 
     at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155) 
     at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94) 
     at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133) 
     at org.jboss.mx.server.Invocation.invoke(Invocation.java:88) 
     at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142) 
     at org.jboss.mx.interceptor.DynamicInterceptor.invoke(DynamicInterceptor.java:97) 
     at org.jboss.system.InterceptorServiceMBeanSupport.invokeNext(InterceptorServiceMBeanSupport.java:238) 
     at org.jboss.ws.integration.jboss42.DeployerInterceptor.start(DeployerInterceptor.java:93) 
     at org.jboss.deployment.SubDeployerInterceptorSupport$XMBeanInterceptor.start(SubDeployerInterceptorSupport.java:188) 
     at org.jboss.deployment.SubDeployerInterceptor.invoke(SubDeployerInterceptor.java:95) 
     at org.jboss.mx.server.Invocation.invoke(Invocation.java:88) 
     at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264) 
     at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659) 
     at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210) 
     at $Proxy46.start(Unknown Source) 
     at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1025) 
     at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:819) 
     at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:782) 
     at sun.reflect.GeneratedMethodAccessor18.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:585) 
     at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155) 
     at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94) 
     at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133) 
     at org.jboss.mx.server.Invocation.invoke(Invocation.java:88) 
     at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142) 
     at org.jboss.mx.server.Invocation.invoke(Invocation.java:88) 
     at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264) 
     at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659) 
     at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210) 
     at $Proxy9.deploy(Unknown Source) 
     at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:421) 
     at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:634) 
     at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:263) 
     at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.loop(AbstractDeploymentScanner.java:274) 
     at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.run(AbstractDeploymentScanner.java:225) 

我的猜测是,JBoss是上了年纪的的.ear内存在的axis2-1.4.1.jar文件之间发生冲突应用程序以及我试图部署的Axis 2 Web应用程序的axis2.jar。有没有人有我的问题的解决方案?

回答

1

我能解决这个问题。我最初的假设是正确的:我的问题是,当首先部署包含axis2-1.4.1.jar jar文件的.ear项目时,应用程序的类加载器将自己注册为能够加载所有类的类加载器在.jar文件中找到,因为没有其他类加载器能够为这些类提供服务。 (您可以查看以下链接以获取更多说明: 1“> http://thorgull.be/doku.php?id=tutorials:jboss:classloaderisolation#fnt_1 http://community.jboss.org/wiki/JBossClassLoadingUseCases )

为了解决这个问题,我创建了一个的jboss-app.xml文件(因为它是一个项目的.ear),并添加以下内容:

<?xml version="1.0" encoding="UTF-8" ?> 
<jboss-app> 
    <loader-repository> 
    mypackage:loader="myapplication.ear" 
    </loader-repository> 
</jboss-app> 

随着这一变化,一个独立的子库将被创建用于我的.ear应用程序(这被称为隔离模式)。这将解决有人可能遇到的任何问题,因为拥有不同版本的相同包/类,尝试运行o n是Jboss的同一个实例。

另一种解决方案可能比较简单,但对哪些应用程序隔离以及哪些应该委托给软件包/类的根存储库不提供太多控制,方法是修改ear-deployer.xml(在您的deploy文件夹中找到),以及设置下面的XML元素:

<attribute name="Isolated">false</attribute> 

请务必阅读我在文章中提到的参考资料,以更好地理解类加载器的工作方式。

祝你好运。