项目中用了REST技术,用于各平台之间的接口调用。采用的sun的jersey组件,曾经写了一些学习总结和demo。
相关资料下载:
http://down.qiannao.com/space/file/chenggm/-4e0a-4f20-5206-4eab/jersey.rar/.page
一、 REST 介绍
1. 什么是 rest
REST (REpresentational State Transfort) 形式上应该表述为客户端通过申请资源来实现状态的转换,在这个角度系统可以看成一台虚拟的状态机。抛开 R. T. Fielding 博士论文里晦涩的理论不说, REST 应该满足这样的特点: 1) 客户端和服务器结构; 2) 连接协议具有无状态性; 3) 能够利用 Cache 机制增进性能; 4) 层次化的系统; 5) 按需代码。说到底, REST 只是一种架构风格,而不是协议或标准。但这种新的风格(也许已经历史悠久?)对现有的以 SOAP 为代表的 Web Service 造成的冲击也是革命性的,因为它面向资源,甚至连服务也抽象成资源,因为它和 HTTP 紧密结合,因为它服务器无状态
2. rest 与 soap 的区别
1 ) rest 暴露的是资源 URI , soap 暴露的是借口
二、 jersey 简介
1. jsr311 规范
一种 restful 风格的规范
2. jersey 结构
三、 jersey 配置
1. 资源描述信息文件( *.wadl )
jersey的资源路径用.wadl文件来描述
2. web.xml 配置
< servlet >
< display-name > JAX-RS REST Servlet </ display-name >
< servlet-name > JAX-RS REST Servlet </ servlet-name >
< servlet-class >
com .sun.jersey.spi .container.servlet .ServletContainer
</ servlet-class >
< load-on-startup > 1 </ load-on-startup >
</ servlet >
< servlet-mapping >
< servlet-name > JAX-RS REST Servlet </ servlet-name >
< url-pattern > /services/* </ url-pattern >
</ servlet-mapping >
3. Summary of Jersey Annotations
http://docs.sun.com/app/docs/doc/820-4867/ggnxo?l=zh&a=view
4. Get 方式下传递参数
定义: @ Path("xxx/{type}") @PathParam(“type”)
访问方式: http://localhost://xxxx /1
定义: @QueryParam(“type”)
访问方式: http://localhost://xxxx?type=1
@Produces 服务器端返回的数据格式
@Consumes 服务器端接收的数据格式(客户端传输的格式)
5. 传递 xml 和 json 格式数据
6. 调试
调试工具 SoapUI
程序实现: apache httpclient
7. 相关参考资料
相关问题:
1. 发送报文的日志记录(目前xml报文直接转换成javabean了,没有记录原始的xml报文)
2. 安全方面欠缺,由于xml报文的传输都是基于内网,尚未考虑报文的加密传输