我正在使用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();