为什么不HttpRequest.getSession(真)获得新的会话时,旧的空/无效

问题描述:

任何人都可以解释,当我运行这个Java代码:为什么不HttpRequest.getSession(真)获得新的会话时,旧的空/无效

HttpSession session = request.getSession(false); 
    if (session != null) 
    { 
      s_log.debug("Session has id: " + session.getId()); 
      session.invalidate(); 
    } 
    s_log.debug("Request Session ID is: "+ request.getRequestedSessionId()); 
    s_log.debug("Request isRequestedSessionIdValid(): " + request.isRequestedSessionIdValid()); 
    HttpSession _session = request.getSession(true); 
    s_log.debug("New Session is :" + _session.getId()); 

为什么我没有得到一个新的会话request.getSession(true)当前请求会话为空且无效时?我看到这在日志中:

请求会话ID是:0000MYF8m5fpUjrzUHIp93yshSh:5e7fcdcf-2274-43bb-83d9-4d9b9a1d766a

请求isRequestedSessionIdValid():假

新的会话:MYF8m5fpUjrzUHIp93yshSh

+0

另外,当我通过运行Websphere App Server的Eclipse以调试模式运行应用程序时,它会按预期得到一个新的会话。但是,当我在eclipse外以非调试模式运行Websphere时,它不会获得新的会话。 –

这是正在重用的会话ID。实际会话正在失效并重新创建。

此行为可以通过将HttpSessionIdReuse属性值设置为false来更改。

+0

我试图通过设置server.xml有但它仍然重用会话ID。我也尝试使用,这也没有工作。 –