定义
webService通过 soap 协议进行系统与系统之间的对象调用,对象的描述语言使用的是wsdl。
soap 的本质就是HTTP协议加XML格式的协议体,soap 是面向对象的。
所以webService是一种跨语言,跨框架,跨平台的远程调用技术,是系统之间通信的一种手段。
WSDL可以直接生成客户端需要调用的代码,这样就可以直接在客户端进行调用,不用进行复杂的json转换。
SOAP协议
soap是简单对象访问协议,是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息
SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议(HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。
SOAP使用基于XML的数据结构和超文本传输协议(HTTP)的组合定义了一个标准的方法来使用Internet上各种不同操作环境中的分布式对象。
单个的Interceptor功能有限,CXF要实现一个SOAP消息处理,需要将许许多多的Interceptor组合在一起使用
SOAP 并不仅限于 HTTP 协议绑定。SOAP也可以绑定到TCP和UDP协议上
webservice常用三种框架
axis2 是一个可用于多种语言的框架,功能强大,但是性能比较低,操作复杂
xfire 是一个轻量级的框架,性能比axis2高。Axis2的升级
cxf 是xfire的升级,性能比较高,现在市场上用的比较广发。xfire的升级
WebService三要素:
WSDL描述如何访问具体的接口
UDDl查询管理分发WebService
SOAP用来查询信息格式
搭建WebService:
@WebService
实现类@WebService(endpointinterface="接口路径")
访问http://localhost:8001/webservice?wsdl 没有问题就证明webservice搭建成功了
通过JaxWsProxyFactoryBean测试服务端
常用框架之CXF
CXF 框架是一种基于 Servlet 技术的 SOA 应用开发框架,要正常运行基于 CXF 应用框架开发的企业应用,除了 CXF 框架本身之外,还需要 JDK 和 Servlet 容器的支持
CXF有两种拦截器:InInterceptor和OutInterceptor,InInterceptor是处理soap请求消息,OutInterceptor是处理soap相应消息。
CXF的加密通过<jaxws:inInterceptors>标签指定拦截器位置,然后cxf的服务端通过继承AbstractPhaseInterceptor来实现拦截器的功能,通过无参构造来确定请求在那个阶段被拦截,然后调用其中的handleMessage方法对传输过来的SoapMessage进行验证。
客户端通过<jaxws:outInterceptors>指定拦截器的位置,该拦截器通过继承AbstractSoapInterceptor实现功能,通过调用handleMessage的方法进行解密,首先会构建一个Qname,然后构建一个xml,给定其中一些元素,然后再把构造的soap头消息添加到message中。