您的位置:首页 > 其它

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

2014-02-19 15:44 260 查看
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契约优先开发方式”作为服务器端(/article/11690177.html

  本例子会写的比较概括,详细可参考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的时候,填写的路径的前面多了个空格。。。。。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: