Restful webservice的状态维护?

Background
基于Websphere Application Server开发Restful webservice为iPhone/iPad App提供服务.

  1. 希望提供有状态的webservice服务. 但不想使用容器session. 既不想使用jsessionid的形式,希望自行实现tokenid自己维护类似于容器session的object hashmap.
  2. 考虑到延展性,自己维护的session应该是分布式的,并且可以自行同步.

Question:

  1. 该如何实现呢?
    查了很多, 发现大家都选择用Memcached存储. 不知道是否可行?

  2. 可否使用Ehcache替代Memcached?
    如果使用Ehcache可以让Ehcache在Websphere Application Server的JVM中运行吗?

[quote]
我设想将token作为参数传递
第一次获得token之后又一直作为参数传递
[/quote]
你这种方式有点类似与[url=http://zh.wikipedia.org/wiki/OAuth]OAuth[/url],应该可行。
[quote]
如果没有状态,那么如何使用token进行认证呢?
你的意思是说我不应该使用REST来与iphone app进行交互吗?
[/quote]
我的意思是说REST使用的场景是请求是无状态的,认证授权过程不算是REST请求,而是授权许可后的请求,比如,你请求新浪微博的数据,任何两个请求直接没有任何关联,这样请求才是无状态的。而你现在要的是通过token作为后续请求获取其保存在服务器端数据的依据,请求相互直接有依赖,这表明是有状态的。
如同购物,必须先有请求添加商品,然后再发请求确认购买,这两个请求就有先后,有依赖。如果你的IPhone App仅仅是通过你提供的RESTful API访问,你怎么强制要求它那这样的顺序发起请求呢,除非你在文档中说明,API只能这样使用。
我要表明的意思是REST,不适合这样的场景。但如果一定要这样用,理论上也似乎是可行的。

你可以参考一下,我在这里的回复:[url]http://www.iteye.com/problems/69694[/url]

[quote]
1. 该如何实现呢?
查了很多, 发现大家都选择用Memcached存储. 不知道是否可行?
[/quote]
这个我在已经回复过,理论上应该是可行的。
[quote]
2. 可否使用Ehcache替代Memcached?
如果使用Ehcache可以让Ehcache在Websphere Application Server的JVM中运行吗?
[/quote]
代替也是可以的,不过在集群方面两者有些不同,memcache是由memcache客户端来维护对集群节点的读写,而ehcache则是有服务器端维护,并通过复制来同步节点数据。ehcache 2.5好像提供了ehcache server作为中心服务器,避免了节点复制开销。memcache需要有好的算法,避免节点变动,导致客户端访问发生变化,而ehcache客户端访问比较同一,但集群节点的管理比较麻烦。

有两个问题:
1、REST,本来就是正对无状态的应用场景,这样是它推荐的,为什么你要在有状态中使用呢?
2、身份识别使用token是可以,但iPhone/iPad App这些应用如何保证每次请求都告诉服务器它的token呢?难道也和浏览器一样利用cookie,或是在API调用中指定该参数?