Jboss LinkageError:加载器约束违规:解析重写方法时

时间:2016-04-19 09:40:05

标签: java xml web-services jboss jaxb

我有两个war文件:A和B,使用CXF进行Web服务

A使用B中的Web服务。

B使用A。中的Web服务。

Tomcat中的一切正常。但是当我在Jboss部署时,我面临着联动错误。

  

引起:java.lang.LinkageError:加载器约束违规:解析重写方法时“org.apache.cxf.jaxws.ServiceImpl.createDispatch(Ljavax / xml / ws / EndpointReference; Ljavax / xml / bind / JAXBContext; Ljavax / XML / WS /服务$模式; [Ljavax / XML / WS / WebServiceFeature)Ljavax / XML / WS /调度;”当前类的类加载器(org / jboss / classloader / spi / base / BaseClassLoader的实例),org / apache / cxf / jaxws / ServiceImpl及其超类加载器(实例),具有javax类型的不同Class对象/ xml / bind /签名中使用的JAXBContext

我从战争中删除了jaxb-api-2.2.3.jar和jaxb-impl-2.2.4-1.jar并进行了测试。我仍然面临同样的问题。

是什么原因?提前谢谢。

1 个答案:

答案 0 :(得分:1)

根据您使用的JBoss版本,将包含一个jaxb jar版本。检查JBOSS_HOME / modules / system / layers / base文件夹。

如果你希望JBoss忽略它所拥有的jar并使用你的应用程序,你需要明确告诉它这样做。这可以使用自定义模块完成:

  1. 在JBOSS_HOME / modules / system / layers / base / <folder_name> / main /中创建一个文件夹,并将您的jar放入其中。
  2. 在此文件夹中创建module.xml文件,并将所有jar名称列为<resource-root>
  3. 在Web项目的WEB-INF目录中创建一个jboss-deployment-structure.xml文件,并在此处列出此自定义模块。
  4. 有关详情,请查看以下链接: https://docs.jboss.org/author/display/AS7/Class+Loading+in+AS7