webservice是基于http协议和xml语法的一种网络接口服务,由于历史原因,在很多政府和科研领域应用较多。当然,由于json数据格式的兴起,webservice技术逐渐开始淘汰。 webservice和微服务、restful api一样,都是应用层协议的一种实践。主要的关键词有:

  • XML. Extensible Markup Language -扩展性标记语言

XML,用于传输格式化的数据,是Web服务的基础。
namespace-命名空间。
xmlns=“http://itcast.cn” 使用默认命名空间。
xmlns:itcast=“http://itcast.cn”使用指定名称的命名空间。

  • WSDL – WebService Description Language – Web服务描述语言。

通过XML形式说明服务在什么地方-地址。
通过XML形式说明服务提供什么样的方法 – 如何调用。

  • SOAP-Simple Object Access Protocol(简单对象访问协议)

SOAP作为一个基于XML语言的协议用于有网上传输数据。
SOAP = 在HTTP的基础上+XML数据。
SOAP是基于HTTP的。
SOAP的组成如下:
Envelope – 必须的部分。以XML的根元素出现。
Headers – 可选的。
Body – 必须的。在body部分,包含要执行的服务器的方法。和发送到服务器的数据。

 

在java中,我们可以使用wsimport命令根据WSDL文件所描述的服务结构,生成java代理类,这样我们就可以像调用java本地方法一样去调用webservice:

  • 代理类的构建:

wsimport -s . url 将服务根据WSDL生成java代理,然后可以直接像sdk的方式调用webserivce

  • 用java代理调用:

MobileCodeWS mobileCodeWS = new MobileCodeWS();
MobileCodeWSSoap mobileCodeWSSoap = mobileCodeWS.getMobileCodeWSSoap();
String aaa = mobileCodeWSSoap.getMobileCodeInfo(“18865930895”,null);

 

 

在java中,常用的webservice框架主要有AXIS2和CXF,区别如下:

 

9102年了,我们一般使用springboot来构建webservice服务,如果是搭配cxf框架,最好使用cxf的starter,如果不使用starter,会出现兼容性的问题,比如报错:

java.lang.RuntimeException: org.springframework.beans.factory.BeanCreationException: Error creating bean with name \’org.apache.cxf.bus.spring.BusApplicationListener\’ defined in class path resource [META-INF/cxf/cxf.xml]: Initialization of bean failed; nested exception is java.lang.NoSuchMethodError: org.springframework.context.support.AbstractApplicationContext.addApplicationListener(Lorg/springframework/context/ApplicationListener;)

springboot+cxf的版本兼容性如下:
parent版本是1.4.5,同时jaxws版本是3.1.7时;
parent版本是1.4.5,同时jaxws版本是3.1.11时;
parent版本是1.5.6,同时jaxws版本是3.1.11时;
parent版本是1.5.8,同时jaxws版本是3.1.12时;
parent版本是1.5.9,同时jaxws版本是3.1.11时;
parent版本是1.5.9,同时jaxws版本是3.1.12时;
parent版本是2.0.3,同时jaxws版本是3.2.6时;

 

版权声明:本文为malcolmfeng原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/malcolmfeng/p/11328037.html