2015-04-11 3 views
1

Je veux utiliser un HttpSession basé sur un cookie dans un conteneur serlvet. Toutes les données de session doivent être stockées dans le cookie. Cela semble inhabituel dans les applications de servlets. Dans Rails (Session) et Playframework (Session), ce type de gestion de session est la valeur par défaut. Pourquoi est-ce si rare?Existe-t-il des implémentations HttpSession basées sur des cookies matures?

Concrètement je besoin d'une solution pour JBoss EAP6 (sans session de haricots scope). J'ai trouvé deux implémentations basées sur des filtres serlvet:

Connaissez-vous des solutions de rechange?

(Si possible, je ne veux pas vouloir discuter des avantages et des inconvénients en général)

+0

Vous pouvez préciser que vous voulez dire que la session est ** stockée ** dans le cookie. –

Répondre

0

Il est rare en Java EE d'avoir des données de session ont persisté dans cookies ... parce que HttpSession est mis en œuvre dans tous les conteneurs de servlets.

En cookies persistants sessions, vous avez une limite de taille, et vous devez utiliser des données signées pour éviter la manipulation du côté client de la session. Vous devez crypter des données si vous souhaitez conserver des informations sensibles en session. Et toutes les données de session sont échangées avec chaque demande et réponse. Ces limites disparaissent avec HttpSession.

Le plus haut intérêt des cookies persistants sessions est que vous pouvez avoir une ferme de plusieurs serveurs qui peuvent répondre à toute demande, car la session est contenue dans la demande. Mais cela peut être fait en Java EE en utilisant sessions collantes à un niveau proxy inverse (parce que vous avez proxys inverses dans presque tous les centres de données graves): les proxys inverses savoir sur la session et de transmettre une demande au serveur qui tient .

Certains serveurs Java EE ont même une notion de sessions partagées. À mon humble avis, il ne serait pas très difficile d'implémenter une session de cookie persistante en Java, c'est simplement que pour les usages professionnels, il n'a pas été jugé assez important.

+0

Je sais que HttpSession est généralement implémenté ** par ** le conteneur de servlets. La question est plus de pourquoi ils ne fournissent pas une implémentation basée sur les cookies comme une alternative. Je ne veux pas discuter des avantages et des inconvénients généraux ici. Il y a plus que ce que vous avez mentionné. Presque tous les serveurs JavaEE fournissent une sorte de réplication de session et je connais les sessions persistantes. Mais ce n'est pas ma question. La mise en œuvre de signatures et de cryptage par moi-même est quelque chose que j'essaie d'éviter. – martin

+0

Comme je ne suis pas moi-même un programmeur de conteneur de servlet, ce qui suit est seulement mon opinion, mais je pense que parce que les développeurs de conteneurs de servlets ne l'ont pas trouvé assez utile. Et les utilisateurs de ces conteneurs ne l'ont pas demandé comme une caractéristique importante. –

+0

ouais, tout ce qui est Java est "usage professionnel". – blurrcat