2017-07-06 38 views
0

任何人都可以解釋,當我運行這個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時,它不會獲得新的會話。 –

回答

0

這是正在重用的會話ID。實際會話正在失效並重新創建。

此行爲可以通過將HttpSessionIdReuse屬性值設置爲false來更改。

+0

我試圖通過設置server.xml有但它仍然重用會話ID。我也嘗試使用,這也沒有工作。 –