CXF契约优先开发方式之客户端实现(client)

来源:互联网 发布:pro怎么卸载软件 编辑:程序博客网 时间:2024/05/05 09:13

IDE:springsource       jdk:1.7       CXF:2.7.8    maven:3.1.1

代码下载路径:http://download.csdn.net/detail/liuxigiant/6937077


简介

     本实例是基于CXF框架实现的WebService客户端,使用maven生成客户端代码和管理依赖,集成spring框架配置客户端。

        客户端实现的方式CXF官网上给出了很多参照,本实例就是参照官网上其中一种方式实现的。

        官网地址:http://cxf.apache.org/docs/writing-a-service-with-spring.html        本实例参照的是:Create a Client (More Manual Way)

  本例子是客户端的实现,上篇文章“CXF契约优先开发方式”作为服务器端(http://blog.csdn.net/liuxigiant/article/details/18043903)

  本例子会写的比较概括,详细可参考CXF官网和CXF契约优先开发方式”文章


实现步骤

1、获取服务器端的WSDL文件(本例子是客户端,可以直接使用服务器端编写的WSDL文件)

2、新建一个maven项目,配置pom文件 

      pom文件主要配置生成客户端代码(根据WSDL文件生成代码)的插件和管理依赖(本例子涉及到spring和cxf的jar包)。

3、编写spring配置文件beans.xml(本例子将该文件放在类路径下)

       该文件的配置参考是参考官网配置的,需要修改服务定义类和服务器地址


4、编写客户端访问程序

      新建类Client.java,新建main方法,获取spring配置的client类,编写访问服务的实现代码。

5、运行

     启动服务器端,运行main方法,控制台能正确打印,服务调用成功


异常问题

运行的时候抛了个异常,异常信息如下:

Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Could not find conduit initiator for address:  http://localhost:8080/policy/insureService and transport: http://schemas.xmlsoap.org/soap/http
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:157)
at com.sun.proxy.$Proxy36.insure(Unknown Source)
at policy_client.Client.main(Client.java:22)
Caused by: java.lang.RuntimeException: Could not find conduit initiator for address:  http://localhost:8080/policy/insureService and transport: http://schemas.xmlsoap.org/soap/http


上网查询了下说下spring 配置文件里面需要添加以下配置项,最后调试时候发现下面的配置项可以不要(那么客户端的配置比服务器端就可以去掉以下配置)。

<import resource="classpath:META-INF/cxf/cxf.xml"/>

 <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />

 <import resource="classpath:META-INF/cxf/cxf-extension-http.xml" />

最终找到的错误是配置address的时候,填写的路径的前面多了个空格。。。。。。。。

0 0
原创粉丝点击