0

我正在尝试创建一个简单的基于 WSDL 的 Web 服务,以使用 Apache CXF 部署在 Wildfly 上。我尝试了使用 wsdl 文件的标准 web.xml、cxf-servlet.xml 配置,但服务器给了我以下错误

在 ws 端点部署中检测到 Apache CXF 库 (cxf-api-2.7.3.jar);要么提供适当的部署,用容器模块依赖项替换嵌入式库,要么为当前部署禁用 webservices 子系统,添加适当的 jboss-deployment-structure.xml

我正在使用 Maven 进行构建和部署过程。在进一步阅读时,我意识到 Wildfly 使用 JBossWS 堆栈并且不鼓励基于 Spring 的 CXF 配置。我还应该使用 wsdl2java 还是 wsprovide/wsconsume ?任何人都可以指导我如何设置一个简单的项目来创建一个 WSDL 第一个 Web 服务并在 Wildfly 上部署,或者给我一个工作示例。

感谢帮助,谢谢。

4

3 回答 3

1

出现上述消息的原因正是 WildFly 的 Web 服务子系统在部署中发现了 Apache CXF 库。这不是期望在 WildFly 等 JavaEE 容器上提供和部署使用 Web 服务的 JavaEE 应用程序的方式,主要是因为容器负责提供 WS 引擎功能。特别是对于 WildFly,内部使用 Apache CXF,因此通过在他的部署中添加一些 cxf 库,用户可能最终会遇到他可能无法轻松解决的复杂类加载问题。无论如何,消息说明了必须做的事情:(JBoss)模块依赖项必须在部署中定义。这可以在部署 MANIFEST.MF 中轻松完成;https://docs.jboss.org/author/display/JBWS/JBoss+Modules上的一些文档(但你可以用谷歌搜索 JBoss 模块并找到很多信息)。

一般来说,我真的建议阅读https://docs.jboss.org/author/display/JBWS/Apache+CXF+integration#ApacheCXFintegration-BuildingWSapplicationstheJBossway上的文档,其中更详细地解释了 JBossWS 与 Apache CXF 的集成和指导正确的打包应用程序。

于 2015-02-23T09:03:20.343 回答
1

添加具有提供范围的所有依赖项,因为 wildfly 有自己的 cxf jar。Wildfly 不需要 cxf jar 来执行 ws。只有您需要 IDE 的 cxf jar 来编译项目。

<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-frontend-jaxws</artifactId>
    <version>${cxf.version}</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-transports-http</artifactId>
    <version>${cxf.version}</version>
    <scope>provided</scope>
</dependency>
    <!-- Jetty is needed if you're are not using the CXFServlet -->
<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-transports-http-jetty</artifactId>
    <version>${cxf.version}</version>
    <scope>provided</scope>
</dependency>

你可以在这里找到答案

于 2015-05-08T13:52:01.560 回答
0

附加建议:阅读http://jbossws.blogspot.it/2014/09/how-to-kick-start-ws-project-in-few.html并尝试描述的 maven 原型来构建正确设置和工作的 WS 客户端在几秒钟内。

如果您有兴趣,我还写了一本涵盖该主题的书,请参阅http://jbossws.blogspot.it/2014/09/a-book-on-jax-ws-in-wildfly-and-more .html

于 2015-02-23T09:07:19.847 回答