setMaxInactiveInterval

setMaxInactiveInterval

我是JEE的新手,这使我感到困惑。根据HttpSession.html#setMaxInactiveInterval(int interval)文档



但是根据我的教科书(已经存在数年了-因此我希望它并不总是正确的),使用零作为参数应该会导致 session 立即超时。

这段代码

public class Test extends HttpServlet {

    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {

        response.setContentType("text/html");
        response.setCharacterEncoding("utf-8");

        PrintWriter out = response.getWriter();

        HttpSession session = request.getSession();
        session.setAttribute("foo", 42);
        session.setMaxInactiveInterval(0);

        out.println(session.getAttribute("foo"));//problem here

    }
}

在Glassfish 4.0上使用的方法似乎可以从教科书(而不是较新的官方文档)中确认理论,因为它返回HTTP状态500-内部服务器错误,并显示错误消息



这里发生了什么?这是Glassfish 4.0错误还是文档错误?也许还有第三种选择?

PS。此代码可以正常工作,带有负值( session 不会无效),并且我在代码中使用-1而不是0。我只是很感兴趣0有什么问题。

最佳答案

关于 session 超时的Servlet Specification一章指出



所以GlasshFish似乎涵盖了这一点。我在规范中找不到任何引用,即对于0setMaxInactiveInterval()的值也应如此。但是它确实说

10-04 09:57