2012-08-16 60 views
3

在我的tomcat 7上運行的grails應用程序中,某處我使現有http會話(session.invalidate())無效並創建新會話(request.getSession(true))。Grails應用程序中的HttpSession

但是我的這個新會話在grails應用程序中並沒有得到體現。由於這個我得到'Session already invalidated'。我不想做request.getSession()無處不在。我只是使用'會話'。

Grails 1.3.7中是否有任何內容,以便這個新會話在應用程序中的每個位置得到反映。

如果您需要更多信息,請讓我知道。

問候

回答

5

好,Grails的持有引用會話對象每一次你問它返回相同的會話..所以,如果你失效一個會話,然後要求其將返回會話時間同樣無效的會話,並導致「會話已無效」例外..

這應該爲你工作..

執行以下行你做session.invalidate剛過

//Trick - so that grails doesn't use old invalidated session but rather create new. 
GrailsWebRequest.lookup(request).session = null 

後,您可以使用,就像你通常做..你不會話需要創建一個新的會話自己

看到這個線程internals

+0

這就是偉大的答案。謝謝Sudhir。 – user1180463 2012-08-16 09:36:35

+1

很高興幫助你 - 你可以接受答案! – 2012-08-16 14:00:03