Wildfly上基于WSDL的Web服务

时间:2014-10-02 14:04:50

标签: web-services java-ee wsdl wildfly-8 jbossws

我正在尝试使用Apache CXF创建一个基于WSDL的简单Web服务,以部署在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上部署或指向我的工作示例。

感谢您的帮助,谢谢。

3 个答案:

答案 0 :(得分:1)

上面消息的原因正是WildFly的webservices子系统在部署中发现了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的集成,并详细介绍了正确的打包应用程序。

答案 1 :(得分: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>

你可以找到答案here

答案 2 :(得分:0)

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

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