在我在tomcat 7上运行的grails应用程序中,某处我正在使现有的http会话(session.invalidate()
)无效并创建一个新会话(request.getSession(true)
)。
但是我的这个新会话并没有在grails应用程序中随处反映出来。因此我得到'Session already invalidated
'。
我不想到处都request.getSession()
。我只是在使用'session'。
Grails 1.3.7中是否有任何内容,因此这个新会话会反映在应用程序的每个位置。
如果您需要更多信息,请与我们联系。
此致
答案 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
的此帖子