9
votes

Jetty HTTP Session est toujours NULL (conteneur incorporé, servledolder)

J'essaie de mettre en place un servlet simple qui utilise une session HTTP dans une jetée intégrée (7.3.0 V20110203) conteneur. Pour démarrer la jetée, j'utilise le code suivant: xxx

Le servlet acquiert une session avec xxx

et stocke certaines données dedans. À la demande suivante, cela obtient la session Avec le code suivant: xxx

et là que la session est toujours nulle.

Je n'ai trouvé aucune information sur Internet sur ce problème particulier. J'ai aussi expérimenté avec la définition d'un sessionManager ou de sessionIDManager, mais cela ne semblait pas changer quoi que ce soit. Je soupçonne que je manque quelque chose à propos de sessionManager ou de SessionIDManager ou de SessionHandler ici, mais c'est juste une supposition sauvage.


0 commentaires

3 Réponses :


5
votes

Votre code fonctionne bien avec cette implémentation squelettique de basesservlet: xxx

de sorte que la session est probablement invalidée ailleurs dans votre code.

SessionHandler peut aussi être défini sur l'explicitement à l'aide de la méthode SetSessionHandler () de servleContexThandler .


0 commentaires

-1
votes

La méthode httpServletResponse # réinitialiser () détruit une session nouvellement créée, donc une nouvelle est créée la prochaine fois et ainsi de suite.


1 commentaires

Et pourquoi la réinitialisation serait-elle appelée?



0
votes
//You need to setup SessionManager first. This worked for me.
Server server = new Server(8031);
ServletHandler handler = new ServletHandler();
server.setHandler(handler);

HashSessionIdManager hashSessionIdManager = new 
HashSessionIdManager();
SessionHandler sessionHandler = new SessionHandler();
SessionManager sessionManager = new HashSessionManager();
sessionManager.setSessionIdManager(hashSessionIdManager);
sessionHandler.setSessionManager(sessionManager);
sessionHandler.setHandler(handler);
sessionHandler.setServer(server);
server.setSessionIdManager(hashSessionIdManager);
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath("/");
context.addServlet("webservlet.IndexServlet", "/index");
context.addServlet("webservlet.HomeServlet", "/home");
context.addServlet("webservlet.CategoryServlet", "/category");
context.addServlet("webservlet.ProductServlet", "/product");
...

0 commentaires