我是泽西/ REST新手,我正在尝试编写一个简单的Web服务。我遇到的问题是请求之间存储数据。
Servlets可以访问会话,但我不相信Jersey / REST允许这样做。
我目前正在编写此服务,以便Android应用程序向Tomcat发出RESTful请求。
现在我还不确定这些请求的类型:它们应该是带参数的URL还是XML字符串?从应用程序传输的数据类型将包括RSS提要和关键字的地址以及各种元数据。
来自服务器的XML响应将再次由RSS提要地址,关键字,关键字的频率和其他元数据组成。
目前的想法是在应用程序和服务器上使用JAXB来构建XML并将其分解为Java对象。
JSON或GSON在这里不可用。
但是在请求之间存储数据呢?如果XML形成请求和响应操作,那么将所有相关变量存储在XML中就足够了,其中每个请求都有一个引用服务器数据库的ID号。
或者通过REST使用servlet的会话上下文是否更好?
如果上述内容含糊不清,请道歉。我是泽西岛/ REST新手。
答案 0 :(得分:5)
虽然如前所述,一般建议您的WS调用是无状态的,但Jersey确实依赖Servlet,因此您可以注入HttpServletRequest并从那里获取会话:
@GET
public String getMethod(@Context HttpServletRequest req) {
HttpSession session= req.getSession(true);
...
然后,您可以将Web服务器会话存储配置为内存,cookie,缓存,数据库或其他任何内容。
答案 1 :(得分:1)
REST Web服务基于HTTP协议,这是一种无状态协议。 在我看来,在网络服务器中保存状态并不是一个好主意。 您应该使用cookie来存储用户数据。
答案 2 :(得分:0)
JAX-RS服务可以是单例或每请求对象。一个单身人士 表示只有一个Java对象为HTTP请求提供服务。按请求方式 创建一个Java对象来处理每个传入的请求并被抛弃 该请求的结束。每个请求还意味着无状态,因为没有服务状态 请求之间。