繁体   English   中英

Jersey中的会话变量(Java / JBoss)

[英]Session variables in Jersey (Java/JBoss)

我正在用Jersey和JBoss用Java开发RESTful Web服务,并且需要像在PHP中那样存储“会话变量”。 保持客户会话,但不使用coockies。

@Context
private UriInfo context;

@Context
private HttpServletRequest httpRequest;

@Path("/firstPage")
@GET
@Consumes(MediaType.TEXT_PLAIN)
@Produces(MediaType.APPLICATION_JSON)
public String createInstance(@QueryParam("instance") String inst) 
        throws JSONException 
{
    // Here I "declare" the session variable
    HttpSession session = httpRequest.getSession(true);
    session.setAttribute("instance", inst);

    // Creation of the DTO (Data Transfer Object)
    JSONObject innerObj = new JSONObject();
    JSONObject outterObj = new JSONObject();

    innerObj.put("ContactID", "{{Contact.Id}}");
    innerObj.put("EmailAddress", "{{Contact.Field(C_EmailAddress)}}");
    outterObj.put("recordDefinition", innerObj);

    return outterObj.toString();
}

@Path("/secondPage")
@GET
@Consumes(MediaType.TEXT_PLAIN)
@Produces(MediaType.APPLICATION_JSON)
public String validateInstance(@QueryParam("instance") String inst) 
        throws JSONException 
{
    // Here I "validate" the session variable
    HttpSession session = httpRequest.getSession(true);
    if ((String)session.getAttribute("instance") == inst) {
        JSONObject obj= new JSONObject();

        outterObj.put("status", 200);
        outterObj.put("instance", inst);

        return obj.toString();
    } else {
        JSONObject obj = new JSONObject();
        obj.put("error", 401);
        return obj.toString();
    }
}

这是我所做的,但是没有按预期工作。 有什么办法吗?

正如somone所指出的:使用cookie来处理会话,该cookie包含php用于将客户端连接到会话的会话ID。

为您的Java Rest服务。 每个定义的会话都不是休息服务的一部分,甚至不鼓励使用。

请参阅有关其余架构的字段原始文档: https : //www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm

5.1.3无状态

接下来,我们为客户端-服务器交互添加了一个约束:通信本质上必须是无状态的,...从客户端到服务器的每个请求必须包含理解该请求所需的所有信息,并且不能利用服务器上任何存储的上下文。服务器。 因此,会话状态完全保留在客户端上。

是否有任何理由反对在两次请求之间收集创建的数据并将其附加到第二个请求?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM