基于GAE的web服务RESTful (Jersey库)开发笔记

 

转载请标明原文地址:http://blog.csdn.net/jiangsq12345/archive/2011/03/02/6219186.aspx

 

 

之前写过一遍关于GAE+JDO搭建商业网站的帖子,而这篇帖子的目的是在原有的源代码基础上稍加改动,让该商业网站支持网络web RESTful服务,本文使用 一个开源项目 Jersey (Jersey is the open source, production quality, JAX-RS (JSR 311) Reference Implementation for building RESTful Web services.

 

 

GAE支持对Jersey的开发,但是新手用起来比较困难,想把个人的经验跟大家分享一下,好让大家少走些弯路

PS: 也可以将Jersey运用到Android等系统开发软件,道理应该差不多,都是google的产品

 

 

 概念

表象化状态转变 (英文:Representational State Transfer ,简称REST )是Roy Fielding 博士在2000年他的博士论文中提出来的一种软件架构 风格。

目前在三种主流的Web服务 实现方案中,因为REST模式的Web服务 与复杂的SOAPXML-RPC 对比来讲明显的更加简洁,越来越多的web服务开始采用REST风格设计和实现。

 

web服务是基于C/S的模式,所以要分别开发客户端,服务器端。Jersey已经包括所有需要的函数库

假如你的服务器已经搭建好,现在只是想再在此基础上开发Web服务,那是一件比较轻松的事情,因为服务器端的原代码基本上不用改动,我们要做的仅仅是在服务器端加入几个资料URL类,然后开发一个客户端

 

 

下面列一下开发过程中容易出错的一些地方

 

1. 需要在网络服务器的配置文件 web.xml,添加一段代码,目的是告诉服务器如何处理我们服务器端的URL

 

此例告诉网络服务器我们的网络服务URL都在 /resources/ 这个目录后

2. Jersey 支持 JAXB (JAVA API for XML Binding),可以将一个java类转化为 XML 或者 JSON 传输。

此类前必须要有 @XmlRootElement 标签

Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE MicrosoftInternetExplorer4


3. 需要远程传输的JAVA类内的变量属性必须为 Public ,否则会出错

 

4.从原理上来说 Jersey 是支持Session的 ( Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE MicrosoftInternetExplorer4 <!-- [if gte mso 10]> HttpSession ),但是在实际操作过程中,服务器端的 URL资源每次调用时都实例化,导致新的实例化对象无法找到之前对象的Session。也就说每次都为客户创建一个新的Session(即使是旧客户),所以从某种意思上来说Jersey无法使用Session。

仔细想想也觉得有道理,因为网络服务一般都是无状态的、不可持续的,所以解决办法是从客户端控制

 

 

附一个URL资源类供参考:

 

 

 

附客户端:

 

 

 

希望对大家有些帮助

 

参考链接:

 Jersey官网: http://jersey.java.net/

维基百科: http://zh.wikipedia.org/wiki/REST


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值