Grails应用程序中的HttpSession

时间:2012-08-16 07:20:43

标签: java grails httpsession

在我在tomcat 7上运行的grails应用程序中,某处我正在使现有的http会话(session.invalidate())无效并创建一个新会话(request.getSession(true))。

但是我的这个新会话并没有在grails应用程序中随处反映出来。因此我得到'Session already invalidated'。

我不想到处都request.getSession()。我只是在使用'session'。

Grails 1.3.7中是否有任何内容,因此这个新会话会反映在应用程序的每个位置。

如果您需要更多信息,请与我们联系。

此致

1 个答案:

答案 0 :(得分:5)

好吧,Grails保存对一个会话对象的引用,每次你请求它一个会话它返回相同的引用..所以如果你使一个会话无效然后要求会话它将返回相同的无效会话,并且导致'会话已经失效'例外..

这对你有用..

在执行session.invalidate

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

之后,您可以像平常一样使用会话..您不需要自己创建新会话

请参阅internals

的此帖子