如何从Wildfly(Jboss)访问CXF JAR文件以用于Web服务端点

6
我尝试在Wildfly 8.2中部署我的war文件。我的应用程序使用org.apache.cxf进行Web服务。但是,默认情况下,Wildfly(Jboss)自带自己的cxf jar包,可以提供完整的Java EE支持。我可以通过jboss-deployment-structure.xml去除jboss cxf,并利用自己的cxf jar包进行Web服务。
<jboss-deployment-structure>
    <deployment>
        <exclude-subsystems>
            <subsystem name="webservices" />
        </exclude-subsystems>
    </deployment>
</jboss-deployment-structure>

但这会禁用jboss的ws支持,这意味着我甚至无法在Jboss管理控制台中找到ws端点。但是我的客户需要利用jboss内置的ws功能,以便他可以随时禁用或启用任何ws调用。有人知道如何配置我的应用程序以利用jboss的cxf jars,以便我可以随时在Jboss管理控制台中调整我的ws。以下链接完全解释了我迄今为止提到的内容。我已经成功地使用了第一个选项,但我需要它与第二个选项一起工作。

http://cxf.apache.org/docs/application-server-specific-configuration-guide.html

注意:请参见第一个主题(JBoss应用服务器)

我似乎无法弄清楚如何配置我的应用程序以利用jboss的cxf jars..!

如果我从build.gradle文件中删除所有org.apache.cxf依赖项,则会出现ClassNotFoundException错误,这实际上告诉我它可以找到cxf-transport jar。

Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: java.lang.ClassNotFoundException: org.apache.cxf.transport.servlet.CXFServlet

如果我在build.gradle文件中包含org.apache.cxf依赖项,它会显示与Jboss中也存在的cxf jar冲突。整个问题是我需要利用Jboss中存在的cxf实现完整的Java EE支持,通过消除用户定义的cxf jars。

2
请查看以下链接 https://docs.jboss.org/author/display/WFLY8/JBoss+Modules+and+WS+applications#JBossModulesandWSapplications-Settingmoduledependencies - Federico Sierra
谢谢Federico。这正是我一直在寻找的准确解决方案。 - The Coder
1个回答

0

这可能与其他依赖项重叠,意味着不同的版本。

我遇到了同样的情况,不得不测试并从org.apache.cxf中删除所有不必要的依赖项,特别是已弃用的依赖项,例如:

  • cxf-rt-rs-extension-providers,
  • cxf-distribution-manifest,
  • cxf-bundle-jaxrs和
  • cxf-rt-frontend-jaxrs。

为保持兼容性,对于所有org.apache.cxf,尤其是较新版本,请使用${cxf.version}并检查依赖关系层次结构是否引入了旧的cxf库。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接