webservice的相关概念

webservice
http+xml(schema)

Web service是什么?
web服务:服务器端整出一些资源可以让客户端应用访问(获取数据)
一个跨语言、跨平台的规范(抽象)
多个跨平台、跨语言的应用间通信整合的方案(实际)

web service能解决什么?
跨平台调用
跨语言调用
远程调用

什么时候使用web Service?
同一家公司的新旧应用
不同公司的应用间
分析业务需求:淘宝网与物流系统如何交互?
一些提供数据的内容聚合应用:天气预报、股票行情

如何做web service的开发?
服务器端(处理客户端应用的请求,执行业务逻辑,提供数据)
客户端(发送请求,获取数据)

几个常用的概念
WSDL:web service definition language
对应一种类型的文件.wsdl
一个web service对应一个唯一的wsdl文档
定义了web service的服务器端与客户端应用交互传递请求和响应数据的格式和方式
SOAP:simple object access protocal
http+xml片断
soap消息:请求消息和响应消息
它依赖于wsdl文档的定义
SEI:Service EndPoint Interface
web service的终端接口,就是服务器端用来处理请求的接口(其中的方法就是处理请求的方法)
CXF:Celtix and XFire
一个apache的webservice框架

开发web service
1. 使用JDK开发
①. 服务器端
编码:
a. 创建一个基于jdk6以上版本的java工程
b. 定义SEI web service Endpoint interface(web service终端接口)
@WebService
public interface HelloWS {
@WebMethod
public String sayHello(String name);
}
c. 定义SEI的实现类:
@WebService
public class HelloWSImpl implements HelloWS {
@Override
public String sayHello(String name) {
System.out.println("sayHello "+name);
return "hello "+name;
}
}

发布:
public class Server {
public static void main(String[] args) {
//客户端发送web service请求的url
String address = "http://192.168.1.196/ws_server/helloWS";
//处理请求的SEI对象
HelloWS helloWS = new HelloWSImpl();
//发布web service
Endpoint.publish(address, helloWS);
System.out.println("发布web service成功!");
}
}
②. 客户端
a. 创建客户端java应用
b. 在应用的src下执行cxf的命令生成客户端代码:
wsimport -keep http://192.168.1.196/ws_server/helloWS?wsdl
c. 编写客户端调用的测试代码,执行:
public class Client {
public static void main(String[] args) {
//创建SEI的工厂对象
HelloWSImplService factory = new HelloWSImplService();
//得到一个SEI实现类对象
HelloWSImpl helloWS = factory.getHelloWSImplPort();
//调用SEI的方法,此时才去发送web Service请求,并得到返回结果
String result = helloWS.sayHello("Tom");
System.out.println(result);
}
}


jdk下生成客户端代码:wsimport -keep wsdl的路径。

cxf下生成客户端代码:进入apache-cxf-3.2.5的bin路径下,wsdl2java -keep wsdl路径。

 

posted @ 2018-08-16 13:13  Thinking丶途  阅读(203)  评论(0编辑  收藏  举报