《Java RESTful Web Service实战》
【下面的文字全部转自某论坛,不代表个人观点】RESTful Web服务的书一直很少,记得O'Reilly出过一本,还有Packt出过两本CXF和Axis2的入门书,都没翻译到国内。想看看这本书,
————————————————————————
1.REST究竟是什么?是一种新的技术、一种新的架构、还是一种新的规范?
REST即表述性状态转移,英文全称Representational State Transfer,是Roy Fielding博士在2000年他的博士论文中提出的一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸 缩性。
REST是一种架构风格,它既不是新技术,也不是新的规范。REST利用了HTTP协议提供的几个方法来实现了网络资源的增删改查。
2.REST与传统的Web Service究竟有没有本质的区别?如果Web Service已经足够好了,为什么还会有REST?作为世界上最成功的分布式应用架构风格,它是为运行在互联网环境的分布式超媒体系统量身定制的,它究竟有哪些优势?
传统的Web Service指的是SOAP Web服务,两者的区别极大。
SOAP即Simple Object Access Protocol,它是一个协议规范,基于XML格式,而REST只是一种架构风格,采用XML或JSON等交换格式都可以。
REST简单、清晰,而SOAP则比较复杂,而且SOAP协议有很多标准的扩展协议规范,比如WS-Security、WS-Routing、WS-Referral等等。
REST很好理解,且极易上手;不过由于它缺乏标准,因此只被看作是一种架构方法。而SOAP是一个工业标准,它具备良好定义的协议,以及一套良好确立的规则,在大型和小型系统中均有采用。
企业级应用通常会考虑SOAP,而互联网应用则通常考虑用REST。
3.从架构风格的抽象高度来看,常见的分布式应用架构风格有三种:1.分布式对象(Distributed Objects,简称DO)、2.远程过程调用(Remote Procedure Call,简称RPC)、3.表述性状态转移(Representational State Transfer,简称REST);这三种风格有哪些实例?请举例说明。
分布式对象(Distributed Objects,简称DO)是早期做分布式系统采取的技术,它的实例有:微软的COM/DCOM技术,CORBA技术等。
远程过程调用(Remote Procedure Call,简称RPC),也是早期做分布式系统采取的技术,它是基于C/S模型调用的机制,客户机向服务器端发送调用请求等待服务器应答,是一种典型的请 求应答机制,大致过程可以理解为本地分布式对象向本机发请求,不用自己编写底层通信本机会通过网络向服务器发送请求,服务器对象接受参数后,经过处理再把 处理后的结果发送回客户端。它的实例有Sun公司的Java RMI(Remote Method Invocation)技术、EJB技术等。
表述性状态转移(Representational State Transfer,简称REST),利用HTTP协议,是目前最适合的技术。
4.在互联网中REST占据了统治地位,但在企业内网中却面临着DO和RPC的挑战,为什么?分布式对象DO与REST有哪些差别?RPC与REST有哪些不同?
1)这很正常,REST架构风格在互联网应用中得到广泛验证,但对于企业内网而言,技术还比较新。
2)现有的企业应用要改造成REST,代价太大。
3)DO和RPC太成熟了,旧的习惯主导一切。
分布式对象DO与REST的区别在于分布式对象采用专有协议,REST采用HTTP协议;分布式对象不是跨平台的,REST是跨平台的。
RPC与REST的区别:RPC以动作为中心,而REST以资源为中心;RPC是C/S架构,而REST既可以是B/S架构,也可以是C/S架构。
5.在Java 世界中,与大Web Service 相对应的规范是JAX-WS。新的规范是Java RESTful Web Service 简称JAX-RS,JAX-RS能否取代JAX-WS?
JAX-RS不太可能取代JAX-WS,至少短时间内不可能。原因很多,主要阐述两点,一是JAX-WS有自己适用的场景;二是技术是为业务服务的,用JAX-WS能搞定的事,不一定就一定要使用JAX-RS。
6.您是否使用过使用Java开发REST式的Web服务经历?请分享下个人经验。
我经常用Java开发REST服务。这几年很多项目都用到了REST服务,尤其是移动互联网应用,通过REST服务暴露接口,供Android终端、iOS终端调用。
用Java开发REST服务,我用的最多的是Jersey,Apache CXF框架也用过,但它显得笨重,用Jersey更加轻量级、高效。
JBoss提供的RESTeasy框架也不错,跟Jersey差不多。
至于REST测试,可以用浏览器,或者编写使用curl命令的脚本,或者用soapui工具等,还可以用Chrome浏览器的REST Client插件等等。
相关推荐
jersey
Official Jersey 2.25.1 User Guide. This is user guide for Jersey 2.25.1. We are trying to keep it up to date as we add new features. When reading the user guide, please consult also our Jersey API ...
Jersey所需Jar包。jersey-client、jersey-core、jersey-grizzly2、jersey-server
如果flink提交jar到yarn上运行报如下错误:java.lang.NoClassDefFoundError: com/sun/jersey/core/util/FeaturesAndProperties,在flink的lib包里面添加这两个jar包
下载后里面的target目录下有war包,可以直接放在tomcat下运行。 项目使用Intellij Idea 14 创建。 http://localhost:8080/rest/helloWorld/a 单独的jersey...http://localhost:8080/rest/demo/hello 集成spring的jersey
jersey最新jar包
Jersey+Spring:解决Jersey单实例问题
jersey框架简单叙述以及 Jersey对HTTPS的支持, Jersey对Json的支持
Jersey官网下载jar,导入功能即可使用,Jersey官网下载jar,导入功能即可使用
jersey demo , jersey+spring+mybitas 做的一个小 demo
一个Jersey+Spring框架的示例。
jersey所需jar包
jersey-1.19JAR包全 Jersey所需要的所有的Jar包,包括对Jason的支持等等,总够有26个
jersey 1.1.7
jersey RESTful service 源代码 jersey RESTful service 源代码
jersey1.18相关的几乎所有jar包,还有部分官方文档
Jersey 2.7的官方英文文档 CHM格式
java jersey document,供学习jersey 的人使用,希望多多分享技术资料
oauth jersey实现例子,和文档介绍。111
一个完整的Jersey的开发小例子,在MyEclipse直接导入工程,运行即可。