RESTful Web服务中的HttpSession为空?

时间:2012-12-14 16:51:10

标签: web-services jersey jax-rs httpsession

在我的web服务类中使用(jersey)@Context我注入了HttpServletRequestHttpServletResponseServletContext个对象进行身份验证,我称之为ValidateUser servlet。 / p>

@Path("/server")
public class WebServer { 
    @Context 
    private ServletContext context; 

    @Context
    private HttpServletRequest request;

    @Context
    private HttpServletResponse response;

    @POST
    @Path("/auth")
    @Consumes(MediaType.APPLICATION_JSON)
    public Response createTrackInJSON(Track track) throws IOException, ServletException{ 
    ....
    context.getRequestDispatcher("/ValidateUser")include(request, response);
    ...
    }        
}
在ValidateUser.java中的

我在验证后创建了会话:

HttpSession session = request.getSession(true);

到目前为止,一切正常,但是当我打电话时:

HttpSession session = request.getSession(false);
session.invalidate();
Logout Servlet会话中的

null。我知道宁静的Web服务是无状态的,但我需要在服务器端维护会话有什么方法可以实现这一点吗? @PerSession注释怎么样?它会在这种情况下有用吗?

1 个答案:

答案 0 :(得分:0)

以下是调试会话的一些方法:

  • 您能看到在您的客户端上创建的会话Cookie吗?
  • 您确定没有使用多个前端吗?也许您需要将会话持久保存到数据库中?
  • 会话是否已超时?在验证呼叫和注销之间可能需要很长时间吗?
  

@PerSession注释怎么样?它会在这种情况下有用吗?

@PerSession将使用相同的基础会话信息。我不认为这会解决你的问题。