Wildfly 10 中的 CXF 2.7.0 Web 服务部署

CXF 2.7.0 web service deployment in Wildfly 10

目标 - 将 EAR 应用程序从 JBoss EAP 5 迁移到 Wildfly 10

问题:代码包含 CXF 2.7.0 Web 服务客户端代码(用于调用第三方 Web 服务)并将其添加到 EAR/lib 文件夹中。但是在部署期间,我遇到异常

日志:

2016-02-26 12:17:48,075 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-6) MSC000001: Failed to start service jboss.deployment.unit."rts-comcast-01.01.75.ear".WeldStartService: org.jboss.msc.service.StartException in service jboss.deployment.unit."rts-comcast-01.01.75.ear".WeldStartService: Failed to start service
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1904)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745) Caused by: org.jboss.weld.exceptions.DefinitionException: WELD-000071: Managed bean with a parameterized bean class must be @Dependent: class org.apache.cxf.jaxrs.provider.DataBindingProvider
at org.jboss.weld.bean.ManagedBean.checkType(ManagedBean.java:208)
at org.jboss.weld.bean.AbstractBean.initializeAfterBeanDiscovery(AbstractBean.java:107)
at org.jboss.weld.bean.ManagedBean.initializeAfterBeanDiscovery(ManagedBean.java:122)
at org.jboss.weld.bootstrap.ConcurrentBeanDeployer$AfterBeanDiscoveryInitializerFactory.doWork(ConcurrentBeanDeployer.java:136)
at org.jboss.weld.bootstrap.ConcurrentBeanDeployer$AfterBeanDiscoveryInitializerFactory.doWork(ConcurrentBeanDeployer.java:127)
at org.jboss.weld.executor.IterativeWorkerTaskFactory.call(IterativeWorkerTaskFactory.java:63)
at org.jboss.weld.executor.IterativeWorkerTaskFactory.call(IterativeWorkerTaskFactory.java:56)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
at org.jboss.threads.JBossThread.run(JBossThread.java:320)

豆子-xml

我在 META-INF 和 WEB-INF 中也添加了 beans-xml

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"  
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"  
  bean-discovery-mode="annotated">  

交替尝试

我怀疑给定的库是否正在加载到应用程序中,并想确认我的依赖项是否良好。所以制作了一个示例 Web 应用程序,这次将所有 CXF jar 文件加载到 WEB-INF/lib 文件夹本身,这次部署也与上面提到的问题相同

Wildfly 10 中的 CXF 版本

Wildfly 10 附带 CXF 3.1.4,但我在我的 lib 文件夹中提供了我需要的 jar,但没有提及任何容器提供的 CXF 模块,以确保加载库中的 CXF 版本。

有人可以提供我哪里做错的见解吗?感谢您的帮助

搜索了一段时间后,我在 jboss-deployment-strucutre.xml 中添加了以下配置更改,但仍然存在问题。请使用此 link 获取详细信息 https://developer.jboss.org/thread/268163

添加正确的容器排除条目后问题解决,提供的 CXF3.1.4 和提供的 CXF 版本 2.7 或 2.4.4(不确定其他较低版本)

jboss-deployment-structure.xml 必须在父级 META-INF 中,以防您的应用程序有多个模块(JAR、WAR、MDB)

这些是我的参赛作品:

    <!-- Exclusions allow you to prevent the server from automatically adding some dependencies     -->
    <exclusions>
       <!-- Exclude Version cxf of JBOSS -->
       <module name="org.apache.cxf" />
       <!-- Exclude JAVA EE of JBOSS (javax.ws..) => Add dependency javax.annotation -->
       <module name="javaee.api" />

       <!-- Exclude RestEasy conflict (javax.ws.rs.ext.RunDelegate) -->
       <module name="org.jboss.resteasy.resteasy-jackson-provider" />

       <!-- module name="org.apache.log4j" />
       <module name="org.apache.commons.logging"/ -->
       <module name="org.jboss.as.jaxrs"/>
       <module name="org.jboss.resteasy.resteasy-jaxrs"/>
       <module name="org.jboss.resteasy.resteasy-cdi"/>
       <module name="org.jboss.resteasy.jackson-provider"/>
       <module name="org.jboss.resteasy.resteasy-atom-provider"/>
       <module name="org.jboss.resteasy.resteasy-hibernatevalidator-provider"/>
       <module name="org.jboss.resteasy.resteasy-jaxb-provider"/>
       <module name="org.jboss.resteasy.resteasy-jettison-provider"/>
       <module name="org.jboss.resteasy.resteasy-jsapi"/>
       <module name="org.jboss.resteasy.resteasy-multipart-provider"/>
       <module name="org.jboss.resteasy.resteasy-yaml-provider"/>
       <module name="org.codehaus.jackson.jackson-core-asl"/>
       <module name="org.codehaus.jackson.jackson-jaxrs"/>
       <module name="org.codehaus.jackson.jackson-mapper-asl"/>
       <module name="org.codehaus.jackson.jackson-xc"/>
       <module name="org.codehaus.jettison"/>
       <module name="javax.ws.rs.api"/>
    </exclusions>