Wildlfy上的Axis1

时间:2016-08-19 19:34:59

标签: apache maven jboss axis wildfly-10

尝试在Wildfly 10.0.0上部署战争。最终独立出现以下错误:

java.lang.LinkageError: loader constraint violation: when resolving method "org.apache.axis.description.TypeDesc.setXmlType(Ljavax/xml/namespace/QName;)V"
the class loader (instance of org/jboss/modules/ModuleClassLoader) of the current class, mypackage/MyClass,
and the class loader (instance of org/jboss/modules/ModuleClassLoader) for the method's defining class, org/apache/axis/description/TypeDesc,
have different Class objects for the type javax/xml/namespace/QName used in the signature

wildfly-10.0.0.Final \ modules \ org \ apache \ axis \ jaxrpc \ main \ axis-jaxrpc-1.4.jar \ javax \ xml \ namespace \ QName.class主要版本:47
jdk1。 8.0_60 \ jre \ lib \ rt.jar \ javax \ xml \ namespace \ QName.class主要版本:52

我已阅读Class Loading in WildFly,但不知道具体的"具体顺序"是:

  

Java应用程序中常见的错误来源包括API   部署中的类也由容器提供。这个   可以导致创建的类的多个版本和   部署无法正确部署。要在WildFly中防止这种情况,   模块依赖项按照应该阻止的特定顺序添加   这种情况不会发生。

jboss-deployment-structure.xml包含:

<module name="org.apache.axis.axis" />

pom.xml包含:

<dependency>
    <groupId>axis</groupId>
    <artifactId>axis</artifactId>
    <version>1.4</version>
    <scope>provided</scope>
</dependency>

wildfly-10.0.0.Final \模块\组织\阿帕奇\轴\轴\主\ module.xml:

<module xmlns="urn:jboss:module:1.1" name="org.apache.axis.axis">
  <resources>
    <resource-root path="axis-1.4.jar"/>
  </resources>
  <dependencies>
    <module name="org.apache.axis.jaxrpc"/>
    <module name="org.apache.axis.saaj"/>
    <module name="org.apache.axis.wsdl4j"/>
    <module name="org.apache.commons.discovery"/>
    <module name="org.apache.commons.logging"/>
    <module name="javax.activation.api"/>
    <module name="javax.api"/>
    <module name="javax.mail.api"/>
    <module name="javax.servlet.api"/>
  </dependencies>
</module>

wildfly-10.0.0.Final \模块\组织\阿帕奇\轴\ JAXRPC \主\ module.xml:

<module xmlns="urn:jboss:module:1.1" name="org.apache.axis.jaxrpc">
  <resources>
    <resource-root path="axis-jaxrpc-1.4.jar"/>
  </resources>
</module>

1 个答案:

答案 0 :(得分:0)

使用本地资源而不是用户依赖项解决了这个问题。 从jboss-deployment-structure.xml中删除:

for (int i = 0; i < filteredReqList.length(); i++) {
    JSONObject item = filteredReqList.getJSONObject(i);
    item.remove("selected");
}

pom.xml(不再提供范围):

<module name="org.apache.axis.axis" />