今天咱们一起探索一下webservice这个技术。
想要解锁更多新姿势?请访问我的博客
什么是webservice
webservice
也可以叫xml web service webservice(在javax.jws), 轻量级的独立的通讯技术
基于web的服务:服务端提供的服务接口让客户端访问
跨平台、跨语言的整合方案
为什么要使用webservice
相比RMI,它是以前比较好的跨语言调用的解决方案
就譬如说,一个电商平台,订单可以查看物流状态。,这可能就是.net实现的webservice服务接口。
webservice中的一些概念
WSDL(web service definition language webservice 定义语言)
webservice
服务需要通过wsdl文件来说明自己有什么服务可以对外调用。并且有哪些方法、方法里面有哪些参数
wsdl基于XML(可扩展标记语言)去定义了
对应一个
.wsdl
的文件类型定义了webservice的服务器端和客户端应用进行交互的传递数据和响应数据格式和方式
一个webservice对应唯一一个wsdl文档
SOAP(simple object access protocal简单对象访问协议)
差不多就是http+xml
,什么意思呢?webservice通过http协议发送和接收请求时, 发送的内容(请求报文)和接收的内容(响应报文)都是采用xml格式进行封装,这些特定的HTTP消息头和XML内容格式就是SOAP协议。
一条 SOAP 消息就是一个普通的 XML 文档,包含下列元素:
• Envelope 元素,标识XML 文档一条 SOAP 消息
• Header 元素,包含头部信息的XML标签
• Body 元素,包含所有的调用和响应的主体信息的标签
• Fault 元素,错误信息标签。
插一句嘴,现在的呢,基于RESTful接口的都是http+json
回到主题,什么是soap?
一种简单、基于HTTP和XML的协议
soap消息:请求和响应消息
http+xml报文
SEI(webservice endpoint interface webservice的终端接口)
webservice服务端用来处理请求的接口,也就是发布出去的接口。
Demo
如何实现呢?写一个小demo
首先是服务端的接口
1 | //SEI以及实现类 |
具体实现类
1 |
|
启动类
1 | public class Bootstrap { |
接着我们启动程序。到浏览器输入url+”?wsdl”就可以查看wsdl文档了
接下来在IDEA中打开terminal或者直接进入cmd,调用wsimport工具,输入命令:
1 | wsimport -keep http://localhost:8888/tech/hello?wsdl |
这里简介一下參数:
- -d 表示输出的文件夹。文件夹必须事先存在,否则导出失败。
- -keep 表示导出webservice的class文件时是否也导出源码java文件。
- -verbose verbose表示具体信息。
这时候生成的客户端代码
迁移到IDEA打开,新建一个demo
1 | public class Demo { |
demo完成~!
关于WSDL文档
下面说说wsdl文档各个标签的含义
Types标签
定义整服务端的数据报文
Schema标签
为了实现最大的互操作性(interoperability)和平台中立性(neutrality),WSDL选用XML Schema DataTypes,简称XSD作为标准类型系统,并将它作为固有类型系统。
图中的是数据定义部分,该部分定义了两个元素,一个是sayHello,一个是sayHelloResponse:
- sayHello:定义了一个复杂类型,仅仅包含一个简单的字符串,将来用来描述操作的参入传入部分;
- sayHelloResponse:定义了一个复杂类型,仅仅包含一个简单的字符串,将来用来描述操作的返回值;
Message标签
定义元素数据类型
Porttype
定义服务器端的SEI
input/output属性:指定输入输出的数据类型
Binding标签
type属性:引用PortType
service标签
表示服务器端的一个webservice容器
name属性:制定客户端属性
prot属性:指定客户端的容器类
address:大部分全部webservice的地址
过去的Webservice工具
发个名字留作备份,因为现在早已不用复杂的webservice了
cxf
celtix+xfire
axis
完
结束
此片完了~ 想要了解更多精彩新姿势?
请访问我的个人博客 本篇为原创内容,已在个人博客率先发表,随后CSDN,segmentfault,掘金,简书,开源中国同步发出。如有雷同,缘分呢兄弟。赶快加个好友,咱们两个想个号码, 买个彩票,先挣他个几百万😝