webservice的两种构架风格
从架构风格角度讲,webservice分为两种,一种是基于soap协议的,另外一种是基于restful的构架风格。二者都是基于http协议的。但是二者解决问题的思路不一样。soap 是利用soap消息传递来实现webservice。restful是充分利用http请求,通过资源定位来解决问题。将webserver 服务端的方法当做资源,通过http 的 get.post.put.delete 等方法,实现对服务端方法的定位和调用。相比与soap, restful 更轻量级,更简单易用,
java对于webservice 支持
java分别对这两种风格的webservice提供了规范,其中对于soap的支持所提供的规范在javax.xml.ws包下面。restful的规范在javax.ws.rs包下面,java只提供了接口具体的实现由第三方实现。目前支持jax-ws规范的有apache 的 cxf, 和Axis,xfire.支持jax-rs的有sun的参考实现jesery. apache 的cxf, jboss 的 RestEasy 和很早期的restful 框架 Restlet。
webservice关于传输attachment的处理
在webservice之间除了调用方法这个行为之外,还有一个需求就是传输attachment,比如图片,pdf文档等等。java为此需求提出也提出了,JAXM&SAAJ(SOAP with Attachment API for Java).当时本人用的时候,是先通过soap 消息查询获取到attachment的一个ID,然后通过这个ID可以获取得到attachment的mineType,和二进制文件流。在客户端可将该二进制文件流写入outputstream。