使用CXF开发webService客户端
来源:互联网 发布:淘宝评论福利晒图 编辑:程序博客网 时间:2024/05/29 18:22
注:csdn排版太麻烦,放在git上了。
地址:https://github.com/liangjuntao/cxf_spring_struts.git
- Web Service简介:
- 不是一种框架、更不是一种技术
- 而是一种跨平台、跨语言的规范
- Web Wervice应用场景:
- 为了解决不同平台、不同语言所编写的应用之间如何调用。
如:Linux平台下用java写的程序调用win平台下c#写的应用 - Web Service集中解决:
- -远程调用
- -跨平台调用
- -跨语言调用
- Web Service实际中用途:
1.同一个公司的新、旧系统的整合。
如:Linux上的java应用,去调用win平台的C#应用2.不同公司的业务整合。
如:淘宝订单中显示的物流信息;
这个信息是物流公司提供的接口,淘宝去调用这个接口,把物流展示出来。以此把两个公司的系统整合在一起。
解决了不同公司系统平台不同,语言不同的问题。3.内容聚合。
如:一个应用提供股票行情,外汇行情,天气预报,编程语言排行等等
这个内容聚合的应用,需要调用大量不同的平台。……
Web Service框架:
Axis(apache) –> Axis2(apache)
XFile –>XFire + Celtrix = CXF
XFile : 本身就是一个Service框架
Celtrix:ESB框架
ESB简介:
SOA(面向服务的架构)
要点:Service1 ,Service2 ,Service3—所有组件都是“即插即用”的。
IBM提倡的SOA架构,系统以“组装电脑”的方式来开发软件。
SOA两个要素:
1.各种提供服务的组件。(Web Service)
2.企业服务总线(Enterprise Service Bus ,ESB)
注:
CXF号称是SOA框架。
CXF内置了一个jetty web服务器。
Cxf:设置环境变量
CXF_HOME=D:\ apache-cxf-2.7.18
CLASSPATH=D:\ apache-cxf-2.7.18\lib
PATH中= D:\ apache-cxf-2.7.18\bin
使用CXF开发web Service开发服务端:
每个webService组件需要两个部分:接口和实现类。
(1)开发一个web service业务接口,该接口要用@WebServicex修饰。
(2)开发一个Web Service实现类,该接口也要用@WebServicex修饰。
其中要指定两个参数:
endpointInterface :实现的接口名称
serviceName :起的service名字
(3)发布WebService
代码见下:
类结构图:
业务接口:
package com.liangjt.app.webService;import javax.jws.WebService;/** * 想要暴露出去的接口 * @author Administrator * */@WebServicepublic interface HelloWorld { String sayHi(String name);}
实现类:
package com.liangjt.app.webService.Impl;import java.util.Date;import javax.jws.WebService;import com.liangjt.app.webService.HelloWorld;/** * 比较简单的实现类 * * @author Administrator * */@WebService(endpointInterface = "com.liangjt.app.webService.HelloWorld", serviceName = "HelloWorld")public class HelloWorldWs implements HelloWorld { @Override public String sayHi(String name) { return name + ",您好。现在时间是:" + new Date(); }}
发布:
package com.liangjt.app.main;import javax.xml.ws.Endpoint;import com.liangjt.app.webService.Impl.HelloWorldWs;/** * WsMain以RunAs java Application即可发布这个接口 * * @author Administrator * */public class WsMain { public static void main(String[] args) { HelloWorldWs hw = new HelloWorldWs(); // 调用Endpoint的发布web service方法 // 第一个参数是访问的地址,第二个参数是实现类 Endpoint.publish("http://127.0.0.1/webservice", hw); System.out.println("web Service暴露成功!"); }}
发布成功:
- 使用CXF开发web Service开发客户端:
- (1)调用cxf调用的wsdl2java工具,根据wsdl文档生成相应的java代码。
Wsdl – web service definition language
任何语言实现了web service,都需要提供并暴露wsdl文档 - (2)找到wsdl2java所生成类的中,一个继承了Service的类。
该类的实例可以当成工厂来使用。 - (3)调用该类的getxxxxPort()方法。
代码如下:
注:之前的server端命名变更由ws_WebService,变化为ws_server;端口变更为9999;
(1)如图调用工具
(2)客户端项目自己建,这些代码都是调用工具生成的,所以不粘贴了
(3)生成远端代理,调用方法
package com.liangjt.app.clientMain;import com.liangjt.app.webservice.impl.HelloWorld;public class ClientMain { public static void main(String[] args) { HelloWorld factory = new HelloWorld(); // hw是远程web service的代理 com.liangjt.app.webservice.HelloWorld hw = factory.getHelloWorldWsPort(); System.out.println(hw.sayHi("zhangsan")); }}
(4)运行结果
zhangsan,您好。现在时间是:Tue Jun 06 00:29:10 CST 2017
以上作为学习的总结。
期间遇到的异常:
1.accessExternalSchema属性设置的限制而不允许file访问
参考:Create a file named jaxp.properties (if it doesn’t exist) under /path/to/jdk1.8.0/jre/lib and then write this line in it:
javax.xml.accessExternalSchema = all
2.Cannot create a secure XMLInputFactory
参考:http://blog.csdn.net/java_min/article/details/9833815
- 使用CXF开发WebService客户端
- 使用CXF开发WebService客户端
- 使用CXF开发WebService客户端
- 使用CXF开发WebService客户端
- 使用CXF开发WebService客户端
- 使用CXF开发webService客户端
- 使用CXF开发WebService客户端
- 【WebService】3.使用CXF开发WebService客户端
- WebService-02-使用CXF开发客户端
- 使用CXF框架开发WebService客户端
- CXF开发WebService客户端
- WebService第三课 使用CXF开发WebService客户端
- 使用cxf开发webservice
- 使用cxf 开发webservice
- 使用CXF开发WebService
- 使用cxf开发WebService
- 使用CXF开发WebService
- 使用cxf开发webservice
- 阿里云的环境配置(mysql,tomcat,jdk)
- q t在xmanage键盘错位
- 已知先序遍历和中序遍历求后序遍历
- mqtt/mqtt.github.io
- 快速排序的实例
- 使用CXF开发webService客户端
- SQL Server学习日记(1)
- Qt之QScrollBar QSlider QDial
- Android Service服务(一)
- Cookie创建,回传,携带、Cookie案例(上次登录时间)、Session域值传递、Session持久化(购物例子)
- 数据结构:神奇的B树实现解析(有图有代码有真相!!!)
- 198. House Robber (Easy)
- LINUX常用命令
- LeetCode Algorithm Add Two Numbers