什么是webservice?
什么是远程调用技术?答:系统和系统之间的调用,从远程系统当中获取业务数据。
Webservice是web服务,他是用http传输SOAP协议数据的一种远程调用技术。
Webservice的入门程序
服务端
第一步:创建SEI接口
第二步:创建SEI实现类,要在类上加入注解:@WebService,作用是标识这个类是服务类,要发布里面的public方法。
第三步:发布服务,Endpoint的publish方法,有2两个参数:1.服务地址 2.实现类实例
第四步:测试服务是否发布成功,通过阅读使用说明书,确定服务接口、方法、参数和返回值存在,说明服务发布成功。
WSDL地址:服务地址+”?wsdl”,比如:http://127.0.0.1:54321/weather?wsdl
WSDL阅读方式,从下往上,service --> binding --> portType --> 其中有接口、方法、参数和返回值
客户端
第一步:使用wsimport命令生成客户端代码
第二步:根据使用说明书,使用客户端调用服务端
创建服务视图,视图是从service的name属性获取
获取服务实现类,从portType的name属性获取
调用查询方法,从portType下的operation标签的name属性获取
Webservice的优缺点:
优点:发送方式采用http的post,http默认端口是80,所以跨防火墙。
数据封装使用XML格式,XML是跨平台,所以webservice可以跨平台。
Webservice支持面向对象开发。
缺点:使用XML封装数据,需要额外传输其他标签,性能较差。
Webservice的应用场景
宏观
软件集成和复用
微观
适用场景:
发布服务(对内/对外),不考虑性能,不考虑客户端类型,建议使用webservice
服务端已经确定webservice,客户端只能使用webservice
不适用场景:
考虑性能时,不建议使用webservice
同构程序下,不建议使用webservice,比如:客户端服务端都是java开发,建议使用Java RMI,Java的RMI同样可以实现远程调用,而且性能比webservice好很多。
Webservice的三要素
WSDL:
定义:web服务描述语言,它是webservice服务端的使用说明书,它说明服务、接口、方法、参数和返回值,它是伴随服务发布成功,而自动生成的,无需编写。
文档结构:
service
binding
portType
message
types
阅读方式:从下往上
SOAP:
定义:SOAP即简单对象访问协议,它是使用http传输XML格式的数据,跨平台,跨防火墙,它不是webservice专有协议。
Soap = http + xml
协议的格式:
必须项:envelope和body
非必须项有:header和fault
SOAP1.1和1.2区别
相同点:
都使用http的POST发送请求
协议格式都相同:都有envelope和body标签
不同点:
Content-type不同:
SOAP1.1:text/xml; charset=utf-8;
SOAP1.2:application/soap+xml; charset=utf-8
命名空间不同:
SOAP1.1:http://schemas.xmlsoap.org/soap/envelope/
SOAP1.2:http://www.w3.org/2003/05/soap-envelope
Webservice的四种客户端调用方式
生成客户端的调用方式
Service编程的调用方式
HttpURLConnecton调用方式
Ajax调用方式
深入开发:用注解修改WSDL内容
@Webservice
@WebMethod
@WebParam
@WebResult
修改完WSDL之后,需要重新生成客户端代码。
详细案例:https://www.cnblogs.com/chenmingjun/p/9692658.html