一、webservice请求的工作原理:
客户端——> 阅读WSDL文档 (根据文档生成SOAP请求) ——>发送到Web服务器——>交给WebService请求处理器——>处理SOAP请求——> 调用WebService——>生成SOAP应答 ——> Web服务器通过http的方式交给客户端
详细描述如下:
无论使用什么工具/语言编写的webservice服务端,都可以使用soap协议,通过HTTP来调用,调用原理相同:创建webservice服务端,将其暴露给web客户端。客户端阅读其wsdl文档,根据wsdl描述文档生成相应的soap请求信息。客户生成的soap请求信息会被嵌入到一个http请求并发送到部署webservice服务的web服务器(如IIS)。web服务器再将请求转发给webservice请求处理器。webservice请求处理器用于解析收到的soap请求,调用webservice服务,获取soap应答。web服务器得到soap应答后,再通过http应答的方式返回给客户端。
WSDL、SOAP和UDDI一起工作,支持webservice和Internet上的其它服务、应用程序和设备交互作用。UDDI提供了发布和定位web服务的功能,WSDL描述了web服务,SOAP服务提供了传输协议。
补充两个概念:
1、soap:简单地说是一个通过http来传输xml数据的协议。
2、WSDL:web服务的接口定义语言,使用xml来描述web服务的标准。描述了如何访问具体的接口,包括三个属性:
1)如何访问服务:和服务交互的数据格式以及必要的协议;
2)服务在哪里:协议的相关地址,比如url等信息;
3)服务具有哪些功能:webservice中提供了哪些可以调用的方法;
二、Java中的三种webservice规范
java中共有三种webservice规范:JAXM&SAAJ、JAX-WS(JAX-RPC)、JAX-RS。
JAX-WS规范是一组xml web service的java API。
规范是一组API?
规范只是集成在java平台里边的API,这个API是用来实现不同风格的JWS的。人们把这一套API叫做web服务规范。因为它们的设计目标不一样,JAX-WS是为实现基于soap协议的web service提供的API,soap协议比较强大。而JAX-RS是为基于REST设计风格的web service提供的API。有了API,然后我们再结合一些框架就能够很轻松的实现web service。
支持的框架:
支持JAX-WS服务规范的框架有:
CXF,Axis,Xfire,结合java语言均可实现JAX-WS。
支持JAX-RS服务规范的框架有:
CXF:Xfire和Celtix的合并
Jersey:sun公司的JAX-RS参考实现
RESTEasy:JBoss的JAX-RS项目
Restlet:也许是最早的REST框架了,在JAX-ES之前就有了
三、重点内容两种不同风格的SOA(面向服务的体系结构)架构:JAX-WS && JAX-RS
补充;
REST服务:
URL定位资源,用HTTP动词(GET、POST、DELETE、DELETE )描述操作。简单来讲,就是可以用httprequest调用某个function。比如在浏览器里输入 www.chx.site/api/guesswhoisawesome,就会调用后台的某个function等到一个response(可以是json)。REST服务采用HTTP做传输协议,REST对于HTTP的利用分为以下两种:资源定位和资源操作。资源定位:
REST要求对资源定位更加准确,如下:
非rest方式:http://ip:port/queryUser.action?userType=student&id=001
Rest方式:http://ip:port/user/student/001
REST方式表示互联网上的资源更加准确,但是也有缺点,可能目录的层级较多不容易理解。资源操作:
利用HTTP的GET、POST、PUT、DELETE四种操作来表示数据库操作的SELETE、UPDATE、INSERT、DELETE操作。比如:
查询学生方法:
设置HTTP的请求方法为GET,url如下:
http://ip:port/user/student/001
添加学生方法:
设置http的请求方法为PUT,url如下:
http://ip:port/user/student/001/张三/…REST常用与资源定位,资源操作方式较少使用。REST是一种软件架构理念,现在被移植到web服务上,那么再开发web服务的时候,偏于面向资源的服务使用REST。REST简单易用,效率高,SOAP成熟度较高,安全性较好。
注意:REST不是webservice,JAX-RS只是将REST设计风格应用到web服务开发上。REST风格的webservice不采用soap传输,直接采用http传输,可以返回xml或json。
jaxb:java xml binding,是 JAX-WS和JAX-RS底层使用的对象与XML之间转换的工具。
JAX-WS:java TM API for XML-Based WedService,是针对webservices。
JAX-RS:java TM API for RESTful webservices&