球衣安全和会话管理

2022-09-01 01:44:46

有没有办法在泽西岛以编程方式获得会话管理或安全性,例如Web应用程序会话管理?或者,事务、会话和安全性是否全部由部署 Jersey 应用程序的容器处理?


答案 1

会话管理是部署 Jersey 的容器的权限。在大多数生产情况下,它将部署在执行会话管理的容器中。

下面的代码是一个简单的 Jersey 资源示例,该资源获取会话对象并将值存储在会话中,并在后续调用中检索这些值。

@Path("/helloworld")
public class HelloWorld {

    @GET
    @Produces("text/plain")
    public String hello(@Context HttpServletRequest req) {

        HttpSession session= req.getSession(true);
        Object foo = session.getAttribute("foo");
        if (foo!=null) {
            System.out.println(foo.toString());
        } else {
            foo = "bar";
            session.setAttribute("foo", "bar");
        }
        return foo.toString();


    }
}

答案 2

我认为会话是我们不应该在RESTful应用程序中使用的东西......

叶戈尔是对的。我们不应该永远不要像传统的Web应用程序那样在服务器端维护状态。如果你想构建一个解耦的面向SOA的应用程序,你不需要为REST Web服务使用任何API/框架。如果你需要或想要在服务器端维护全局客户端-服务器状态,你正在隐式构建我们可以描述为面向SOA的[web]应用程序的东西,但使用泽西岛就像一个[web]开发框架。无意中,您正在扭曲Web服务(REST或其他)的性质。你可以按照第一个答案中建议的方式去做,但你不能。最终的结果不是 Web 服务,只是使用 Web 服务工具构建的常规应用程序。

-_o


推荐