getSession()始终创建一个新会话

我们在应用程序中通过实现Filter来安装SecurityFilter类,我们的doFilter方法如下所示。

public void doFilter(ServletRequest sres, ServletResponse sreq, FilterChain chain) throws IOException, ServletException { LOGGER.debug(Logger.buildLogMessage("Starting SecurityFilter.doFilter")); HttpServletRequest request = (HttpServletRequest) sres; HttpServletResponse response = (HttpServletResponse) sreq; HttpSession session = request.getSession(); 

我们的web.xml中有以下条目

  SecurityFilter com.abcweb.filter.SecurityFilter   SecurityFilter /resources/*  

我们对应用程序进行了很多REST调用,所有这些调用都通过了这个filter。 Java API文档说,request.getSession()返回会话(如果存在),否则会创建新会话。 但是在我们的应用程序中,request.getSession()总是为每个REST调用创建一个新会话。 这可能会出错?

如果您的应用程序设置设置为通过cookie跟踪JSESSIONID,则如果您从同一浏览器发出请求,则应用程序将返回相同的会话,如果您从其他浏览器发出请求,则返回新会话。 这显然是因为cookie基于每个浏览器生存。