Java Restful Web Service 学习指南
Restful是一种架构style,目前常说的有restful web service, resultful http。现在热搜榜的微服务,大多数会采用Restful方式。
JAX-RS 作为一个Restful 风格WebService规范,目前已发展到了2.0版本,目前比较常用的两个版本是JAX-RS1.1(jsr-311)、 JAX-RS2.0(jsr-339) 。
规范地址:https://jax-rs-spec.java.net/ 。现在已有很多实现:
Jersey:是jax-rs的标准实现,对规范的支持自然是最快的(JAX-RS1.1、 JAX-RS2.0)。它支持多种Servlet容器、并可以与Grizzly、Netty等结合使用,性能也是很不错的。网上有人说它是一个参考实现,但它真的不仅仅是一个参考实现而已,Kafka Connect采用了它。 支持与Spring 集成。
https://jersey.java.net/
CXF:apache下的一个开源的services框架,支持多种协议( SOAP, XML/HTTP, RESTful HTTP, or CORBA),同时也支持多种传输协议:(HTTP, JMS or JBI)。
支持的Java规范(jsr)有:JAX-WS、JAX-RS、SAAJ 。 对于JAX-RS,支持目前JAX-RS1.1、 JAX-RS2.0。 支持与Spring集成。
http://cxf.apache.org/docs/restful-services.html
http://cxf.apache.org/docs/overview.html
RestEasy:它是JBoss社区的一个开源项目,已支持2.0规范。据说是性能最好的,我没有测试过。
http://docs.jboss.org/resteasy/docs/3.1.1.Final/userguide/html/index.html
Restlet:支持JAX-RS,支持与Spring集成。
https://restlet.com/open-source/features
这里有一篇网友的性能测试博客:http://www.tuicool.com/articles/UziAZ3u
这里是一篇网友的8个restful框架对比的博客:http://developer.51cto.com/art/201511/497863.htm
题外话说了这么多,言归正传,既然他们都实现了jax-rs规范,那么我们只需要学习了标准规范,并使用规范中的API来编程,那么我们的程序就可以与这些实现结合使用。
为了快速学习规范:我们可以参考: 1)标准规范 2)入门教程:Java Restful WebService 实战 3) API Docs
下面提供前两者的下载链接:
链接:http://pan.baidu.com/s/1kVkb7CF 密码:vrln
Jersey2.x用户指南:https://github.com/waylau/Jersey-2.x-User-Guide
下面总结了如何学习JAX-RS,进行Restful WebService编程:
第一步: 了解规范中各个组件、API处理流程
JAX-RS中组件:
1)Resource :代表资源,用于在接收到资源请求后,调用相应的方法处理。
资源分类:Resource、SubResouce。如何编写一个Resource Class、Resource Method?如何定位一个Resource?Resource的生命周期如何?等等问题都将在jsr手册里提到。
2)AOP:包括Filter、Interceptor。用于在Client、Container中读写请求之前做一些处理。
3)Provider:Provider提供某种东西的。有下列Provider:
MessageBodyReader:从InputStream中读取数据转换成Java对象。也就是常说的反序列化。
MessageBodyWriter:把Java对象写到OutputStream中,也就是常说的序列化。
ExceptionMapper:把指定的Exception映射到一个Response对象。
ContextResolver:用于解析Resource中需要用的上下文。参见:@Context
这些接口的实现,注册到JAX-RS容器里,通常有两种方法:1)使用@Provider让容器自动扫描,2)通过编程的方式注册。
4)Client:发起请求,处理响应。
每一种JAX-RS实现都要遵循的处理流程:

第二步:结合DI容器,并采用分层思想(Resource、Service、DAO)进行业务系统编写。
目前流行的DI容器有:Spring、Guice、HK2等等。
第三步:和其他容器结合,部署项目。
譬如说Servlet容器、Grizzly等。
Java Restful Web Service 学习指南的更多相关文章
- <<Java RESTful Web Service实战>> 读书笔记
		
<<Java RESTful Web Service实战>> 读书笔记 第一章 JAX-RS2.0入门 REST (Representational State ransf ...
 - Java RESTful Web Service相关概念
		
原文地址:http://1.liangtao.sinaapp.com/?p=647 接上一篇文章REST|RESTful初步认识:p=639">http://1.liangtao.si ...
 - Java restful web service 开发入门
		
可用的框架有不少,我用的是jersey. 直接上代码,其实,如果你会web service 这个restful的就很好理解了,自己跑一遍就OK了 用到的类 User.java package demo ...
 - day01(RESTful Web Service、SVN)
		
今日大纲 搭建SSM环境 基于SSM环境实现用户管理系统 学习RESTful Web Service 学习SVN 统一开发环境 JDK1.7 32? 64? -- 64 Eclipse 使用4.4.1 ...
 - 【转】基于CXF Java 搭建Web Service (Restful Web Service与基于SOAP的Web Service混合方案)
		
转载:http://www.cnblogs.com/windwithlife/archive/2013/03/03/2942157.html 一,选择一个合适的,Web开发环境: 我选择的是Eclip ...
 - 使用Java创建RESTful Web Service
		
REST是REpresentational State Transfer的缩写(一般中文翻译为表述性状态转移).2000年Roy Fielding博士在他的博士论文“Architectural Sty ...
 - (转)接口自动化测试 – Java+TestNG 测试 Restful Web Service
		
本文主要介绍如何用Java针对Restful web service 做接口自动化测试(数据驱动),相比UI自动化,接口自动化稳定性可靠性高,实施难易程度低,做自动化性价比高.所用到的工具或类库有 T ...
 - 使用Java创建RESTful Web Service(转)
		
REST是REpresentational State Transfer的缩写(一般中文翻译为表述性状态转移).2000年Roy Fielding博士在他的博士论文“Architectural Sty ...
 - 译:3.消费一个RESTful Web Service
		
这节课我们根据官网教程学习如何去消费(调用)一个 RESTful Web Service . 原文链接 https://spring.io/guides/gs/consuming-rest/ 本指南将 ...
 
随机推荐
- mongoose返回值无法修改
			
mongoose 查询方法 find 例:db.collections.find(query,function(err,doc) { 如果var res = doc[0] 是{name:'feife ...
 - [转载] PHP 线程,进程和并发
			
转载自http://chenpeng.info/html/3021 进程 进程是什么?进程是正在执行的程序:进程是正在计算机上执行的程序实例:进程是能分配给处理器并由处理器执行的实体. 进程一般会包括 ...
 - [转载] java的动态代理机制详解
			
转载自http://www.cnblogs.com/xiaoluo501395377/p/3383130.html 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代 ...
 - web前端-----JAVA Script(一)
			
JavaScript概述 JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEase ...
 - NetFlow学习笔记
			
NetFlow学习笔记 标签: netflow 由于工作需要,对NetFlow做了一些学习和调研,并总结成文档以供学习分享. 背景:随着系统的升级与漏洞的修补,入侵主机进而进行破坏的病毒攻击方式在攻击 ...
 - [最短路]P1462 通往奥格瑞玛的道路
			
题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡奥格瑞玛 题目描述 在艾泽拉斯, ...
 - [动态规划]P1220 关路灯
			
题目描述 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉这些路灯. 为了给村 ...
 - 正确释放Vector的内存
			
http://blog.jobbole.com/37700/ 今天在看微博的时候, 有人提出了一个对于Vector内存泄露的疑问( Link). 博主采用 Vector存储一些数据,但是发现在执行 c ...
 - 大神博客链接系列---C#SubSonic3.0搭建ORM
			
一.C#框架 C#ORM框架: SubSonic3.0制作ORM--- http://www.cnblogs.com/EmptyFS/p/3659679.html
 - 十二、VueJs 填坑日记之项目打包发布
			
通过上一篇博文的学习,我们其实已经完成了我们设想的项目的开发.但是,我们做好的这套东西,是基于 nodejs 开发的.而我们最终希望,我们开发的项目,生成好一堆文件,然后随便通过任何一个 http 服 ...