如何在 REST Jersey Web 应用程序中创建、管理、关联会话

Posted

技术标签:

【中文标题】如何在 REST Jersey Web 应用程序中创建、管理、关联会话【英文标题】:How to create, manage, associate a session in REST Jersey Web Application 【发布时间】:2014-04-18 03:28:33 【问题描述】:

html5 UI 连接到后端(REST Jersey 到业务逻辑到 Hibernate 和 DB)。 我需要为每个用户登录创建并维护一个会话,直到用户注销。

能否请您指导我可以使用哪些技术/API。 是否也需要在 REST Client 端处理某些事情..

【问题讨论】:

【参考方案1】:

将 JAX-RS 用于 RESTful Web 服务相当简单。这是基础知识。您通常通过JAX-RS annotations 定义一个或多个服务类/接口来定义您的 REST 操作,如下所示:

@Path("/user")
public class UserService 
    // ...

您可以通过这些注释将对象自动注入到您的方法中:

// Note: you could even inject this as a method parameter
@Context private HttpServletRequest request;

@POST
@Path("/authenticate")
public String authenticate(@FormParam("username") String username, 
        @FormParam("password") String password) 

    // Implementation of your authentication logic
    if (authenticate(username, password)) 
        request.getSession(true);
        // Set the session attributes as you wish
    

HTTP Sessions 可以像往常一样通过getSession()getSession(boolean) 从HTTP Request 对象访问。其他有用的注释是@RequestParam@CookieParam 甚至@MatrixParam 等等。

如需更多信息,您可能需要阅读RESTEasy User Guide 或Jersey User Guide,因为两者都是极好的资源。

【讨论】:

感谢您的回答。假设我有一个映射多个模块的用户对象。如何将会话绑定到用户对象。 您能解释一下如何将会话绑定到用户对象吗?你想达到什么目标? 我的意思是,我从 HTML5 Web UI 登录。然后我想将此用户对象关联(绑定)到会话。绑定到 Session 的这个 User 对象将在内部各处使用。也就是说,每当我使用 Uder 对象时,都应该将相应的会话 id 标记到它。 有这方面的演示或教程吗?如果有教程会更有帮助

以上是关于如何在 REST Jersey Web 应用程序中创建、管理、关联会话的主要内容,如果未能解决你的问题,请参考以下文章

jersey rest web 服务与 Activemq 中间件集成

Spring 4 vs Jersey 用于 REST Web 服务

ajax 调用 jersey rest web 服务中的 Access-Control-Allow-Origin

使用 Jersey 和 Apache Tomcat 构建 RESTful Web 服务

Jersey JAX-RS REST“getter”方法总是被调用

如何将PNG图像从Jersey REST服务方法返回到浏览器