8
votes

Comment implémenter une session HTTP personnalisée en Java?

Je devrai implémenter ma propre version de httpsession dans Java. J'ai trouvé très peu d'informations qui explique comment réaliser un tel exploit.

Je suppose que mon problème est - comment puis-je remplacer la méthode httpsession existante, quelle que soit la mise en œuvre du serveur d'applications?

J'ai traversé une qualité de qualité mais plutôt ancienne qui m'aide à atteindre mon objectif - http://java.sun.com/developer/technicalArticles/servlets/servletControl/

Y a-t-il d'autres approches?


3 commentaires

Afaik, ce n'est pas possible. La SPEC de Jee n'impose pas que la mise en œuvre HTTPSession est remplaçable. Mais la principale question est la suivante: pourquoi voulez-vous faire cela?


Je ne sais pas si vous devez savoir comment implémenter, mais vérifier cela apl.jhu.edu/~hall/java/servlet-Tutorial/...


Qu'avez-vous besoin exactement de faire cela que vous pensez avoir besoin de mettre en œuvre httpsession?


3 Réponses :


5
votes

Créer une nouvelle classe et implémenter httpsession: xxx

* et étendre httpservletQuestWrapper . Votre wrapper doit renvoyer votre Classe HTTPSession HTTPSESSION GETESSION (BOOLEAN) . Dans le filtre, utilisez votre propre httpservletQuestwrapper .


4 commentaires

YEP - que je sais, mais comment obtenez-vous le serveur d'applications (c'est-à-dire Glassfish, Weblogic) pour renvoyer la myhttPession quand request.Getsession () est appelée?


Quel serveur d'applications utilisez-vous?


Aujourd'hui, j'utilise actuellement Glassfish 3


@ Plymouth5 dans votre personnalisé httpServletQuestwrapper Vous remplacez les méthodes pour renvoyer votre implémentation de session personnalisée.



1
votes

Il ne semble pas que cela soit facilement faisable d'une manière portable qui fonctionnerait entre différents conteneurs, car la mise en œuvre HttPSession est fournie par le conteneur J2EE.

Toutefois, pour obtenir un résultat similaire, vous pouvez implémenter un javax.servlet.filter et javax.servlet.htttptsandsandlistener et dans votre filtre, enveloppez le servleRequest et servleResponse, tels que décrites dans .


0 commentaires

8
votes

Ses deux manières.

"Emballage" "L'original httpsession dans votre propre httpServletQuestWrapper implémentation.

Je l'ai fait cela il y a peu de temps pour le regroupement des sessions distribuées avec Hazelcast et Session Session.

ici est très bien expliqué.

Tout d'abord, implémentez votre propre httpServletQuestwrapper xxx

Après, à partir de votre propre filtre, enveloppe l'original httpsession , et mettez-le à l'intérieur du Filterchain fourni par votre conteneur de servlet. < pré> xxx

Enfin, définissez votre filtre au début dans la web.xml pour vous assurer qu'il fonctionne avant tout autre.

La deuxième manière à y parvenir est fournissant à Votre conteneur de servlet votre session personnaliséManager.

Par exemple, dans Tomcat 7 .


0 commentaires