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(本例子将该文件放在类路径下)
该文件的配置参考是参考官网配置的,需要修改服务定义类和服务器地址
![](http://img.blog.csdn.net/20140219151830875?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1eGlnaWFudA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
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的时候,填写的路径的前面多了个空格。。。。。。。。
代码下载路径: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的时候,填写的路径的前面多了个空格。。。。。。。。
相关文章推荐
- Webservice_23_SOAP的基于契约优先开发用户管理_实现客户端
- CXF契约优先开发方式
- java 用cxf方式实现的webservice,java客户端,C#客户端调用
- webservice24--基于契约优先开发用户管理小功能--实现wsdl
- restful接口客户端和服务端开发,HttpURLConnection,HttpClient,post ,get方式调用
- Webservice_25_SOAP的基于契约优先开发用户管理_实现Jsp页面功能
- 使用契约优先的方式来开发WebService(用到了jaxws-ri),并发布到tomcat中
- Webservice_21_SOAP的基于契约优先开发用户管理_实现Wsdl
- CXF中的契约优先开发及隐式声明头信息
- 【笔记】WebService开发客户端 cxf方式
- CXF开发WebService客户端请求服务端的方式
- CXF开发服务端(Server)和客户端(Client)
- webservice 完整 实现方式 服务端 客户端 (cxf)
- java wsdl反向生成源码,并使用CXF实现客户端调用代码
- android开发步步为营之51:弹出窗及遮罩层的几种实现方式
- WebService第三课 使用CXF开发WebService客户端
- android客户端通过Get方式提交参数给服务器,使用URL和HttpURLConnection实现,以及乱码问题解决
- iOS开发 - OC - 实现本地数据存储的几种方式二(直接使用sqlite)
- WCF 第二章 契约 实现一个双向契约的客户端部分
- XFire开发客户端几种方式的示例