2012-08-16 6 views
3

Dans mon application grails fonctionnant sur tomcat 7, Somewhere invalide la session http existante (session.invalidate()) et crée une nouvelle session (request.getSession(true)).HttpSession dans Grails Application

Mais ma nouvelle session ne se reflète pas partout dans l'application Grails. Pour cette raison, j'obtiens 'Session already invalidated'. Je ne veux pas request.getSession() partout. J'utilise simplement 'session'.

Y at-il quelque chose dans Grails 1.3.7, de sorte que cette nouvelle session se reflète partout dans l'application.

S'il vous plaît laissez-moi savoir si vous avez besoin de plus d'informations.

Cordialement

Répondre

5

Eh bien, Grails détient la référence à un objet de session et chaque fois que vous demandez pour une session, il retourne la même référence .. donc si vous invalidez une session, puis demander la session, il sera de retour la même session invalidée, et la cause 'la session déjà invalidée' exception ..

Cela devrait fonctionner pour vous ..

Exécuter la ligne suivante Juste après vous session.invalidate

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

Après cela, vous pouvez utiliser la session comme vous le faites normalement .. vous ne avez pas besoin de créer une nouvelle session vous

Voir ce fil pour internals

+0

Cest une grande réponse. Merci Sudhir. – user1180463

+1

Heureux qu'il vous a aidé - vous pouvez accepter la réponse! –