Jersey RestFul:如何防止每个用户一个会话

时间:2012-08-08 11:57:24

标签: rest servlets jersey

我正在使用RestFul Web服务。

我的问题是,为什么框架为每个服务创建了多个会话。

这是我的服务类

@Path("/balances")
public class HelloService {
    @Context
    HttpServletRequest req1;
    @Context
    HttpServletRequest req2;


    public String sayPlainTextHello(String account) {
    HttpSession session1 = req1.getSession(true);
    HttpSession session2 = req2.getSession(true);
    System.out.println("First Session id" + session1.getId());
    System.out.println("second Session id" + session2.getId());
    return "";
    }

}

上述输出

First Session id8D8DEF5AC8D1DEDC59F20AE875EE0B70
second Session id8D8DEF5AC8D1DEDC59F20AE875EE0B70

这是我的另一个服务类

@Path("/hais")
public class HaiService {
    @Context
    HttpServletRequest req3;
    @Context
    HttpServletRequest req4;
    public String sayPlainTextHello(String account) {
    HttpSession session3 = req3.getSession(true);
        HttpSession session4 = req4.getSession(true);
        System.out.println("For haiiiiiiiiiiis First session id" + session3.getId());
        System.out.println("For haiiiiiiiiiiis  Second session id" + session4.getId());
        return "Testing the hai Service";
    }

}

上述输出

For haiiiiiiiiiiis First session id6DC315D6B833BC16B3EE13C5810B2810
For haiiiiiiiiiiis  Second session id6DC315D6B833BC16B3EE13C5810B2810

这两个服务类都是在Single Jersey客户端中调用的

客户端程序

public static void main(String[] args) {
        try {


            WebResource webResource = client
                .resource("http://localhost:8080/Tes/ajax/balances/");

            WebResource webResource2 = client
            .resource("http://localhost:8080/Tes/ajax/hais/");

正如您所见,它为每个服务类创建不同的会话ID

如果我在第二个服务类的会话创建期间提及false,则会遇到session.getId();

的null指针异常
HttpSession session1 = req1.getSession(false);  
HttpSession session2 = req2.getSession(false);

HttpSession session1 = req1.getSession();  
HttpSession session2 = req2.getSession();

0 个答案:

没有答案