java - Jboss中的axis2.jar冲突

标签 java jboss axis2

我在部署 Axis 2 Web 应用程序时遇到问题。我正在使用 Jboss 4.2.0,它已经有一个使用 Axis 2 客户端的 Web 应用程序。我尝试部署的这个 Axis 2 应用程序实际上是一个存档服务(扩展名为 .aar),它位于 Axis 2 Web 应用程序的“服务”文件夹中。然后使用 ant builder 构建后者,生成的 .war 文件就是我正在部署的文件。现在,当我从 Jboss 的部署文件夹中删除旧应用程序时,我的新应用程序工作正常。但是当我再次重新部署旧应用程序时,我从 Jboss 收到以下异常:

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 文件之间存在冲突。有人能解决我的问题吗?

最佳答案

我能够解决问题。我最初的假设是正确的:我的问题是,当首先部署包含 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 应用程序创建一个单独的子存储库(这称为隔离模式)。这将解决任何人可能遇到的相同包/类的不同版本,试图在同一 Jboss 实例上运行时遇到的任何问题。

另一个解决方案可能更简单,但对要隔离的应用程序以及应将哪些应用程序委托(delegate)给包/类的根存储库没有太多控制,是通过修改 ear-deployer.xml(在您的部署文件夹中找到) ,并设置以下 XML 元素:

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

为真

请务必阅读我在帖子中包含的引用资料,以更好地理解类加载器的工作原理。

祝你好运。

关于java - Jboss中的axis2.jar冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7310972/

相关文章:

jboss - 从另一个客户端访问部署在 JBoss 7.0.1 中的 ejb

axis2 - 在 WAR 应用程序中使用 axis2 运行

java - 获取 zip 条目的实际大小

java - 使用对象时 protected 访问

java - jxls reader 2.03读取日期到java 8 ZonedDatetime等

java - 自定义服务异常作为 AxisFault 被抛出

java - Apache Axis2/Rampart + Maven

java - 到达分支中顶点的第 n 个后继

java - Spring中如何读取jBoss配置文件?

Java webapp 部署 : explode or not to explode?