Java Webservice的变化

概述:记得去年看到公司的另一个项目组做的电子商务平台,里面有飞机和酒店预订,在获取国内航班信息时,采用的是远程同步中航信的航班信息。在看了远程同步方式采用servlet发布对外服务,传输的数据采用xml格式传输时,感觉怎么会有人这样用?为什么不用webservice方式呢?不知道中航信到底为什么这样做,但是在今年的研发中,初次接触了REST webservice的概念,感觉上面的做法是否也是想摆脱传统基于WSDL、SOAP的webservice呢?答案不知道,但是REST可能是 Java webservice以后的发展方向。随着人们对java语言构建的系统复杂和大量jar包的厌烦,现在的项目大家喜欢用jar少的,应用简单的开源代替复杂的,jar包多的开源,也许这就是REST越来越流行的原因吧。不够个人感觉传统webservice也有它的有点,至少目前是这样的,就看以后 REST webservice的发展了。

一.概念

rest,即REST(Representational State Transfer表现层状态转移)是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。

REST提出了一些设计概念和准则:  

1.网络上的所有事物都被抽象为资源(resource);   

2.每个资源对应一个唯一的资源标识(resource identifier);   

3.通过通用的连接器接口(generic connector interface)对资源进行操作;   

4.对资源的各种操作不会改变资源标识;   

5.所有的操作都是无状态的(stateless)。

官方网站:

二.理解

对于rest,官方给出的说明是rest只是一种架构风格,不是一种协议,rest实现的webservice还是基于HTTP协议的。但是对应的传统webservice,采用的是SOAP协议,HTTP只是作为传输协议,传输内容是SOAP格式的数据。对于rest的理解就是,通过普通的 HTTP协议来实现webservice的远程分布式的功能,没有采用传统的SOAP协议和WSDL,同时rest设计了自己实现webservice的架构风格,规定了远程调用的概念和方式,比如所有的事物都称为“资源”,对所有资源的访问都通过通用的连接器接口,采用url访问。

三.目前实现REST webservice的开源

1.Restlet(http://www.restlet.org/)

2.Apache Axis2(http://http://ws.apache.org/axis2/)

3.Apache CXF(http://cxf.apache.org/)

4.Jersey(http://jersey.java.net/)

5.RestEasy(http://www.jboss.org/resteasy)

前几种都是实现比较复杂的开源,目前简单易用的是sun公司的Jersey和Jboss的RestEasy,RestEasy相对成熟一些,使用也简单,但是和jboss的相关组件联系比较紧密。Jersey是sun主导的rest的开源,目前在不断加入一些新特性,稳定的版本是1.14,下面以 Jersey为例简单介绍一下Jersey Rest。

四.Jersey REST

特点:Jersey REST采用简洁的架构和应用风格实现了REST Webservice,它是基于一个HTTP方法和REST概念的方法。一般将会给这个服务定义一个基本的URI,还有MIME类型(支持xml,json,user-defined,…)还有就是所要采用的方法类型。通过资源地址URL定位资源,采用PUT,GET,POST,DELETE几种方式,来规范rest webservice的访问方式,分别的含义

  1.     GET这个一般就是只能读取一个资源.而不能够修改它
  2.     PUT会创建一个新的资源
  3.     DELETE会移除资源
  4.     POST会创建一个新的或者更新一个已经存在的资源

五.实例


你可能感兴趣的:(Java Webservice的变化)