26. oktober 2004 - 04:35Der er
24 kommentarer og 1 løsning
Tomcat, Struts og jsessionid
Hyyylll! Jeg kan simpelthen ikke finde en løsning på dette problem via. google. Det sker nogle gange i min web-applikation, at jeg sidder og surfer rundt - og midt i det hele bliver der oprettet en ny session ... selvom browseren supporterer primære cookies. Efter denne session bliver oprettet kommer der så ;jsessionid=... på URL'erne pga. <html:link .../>
Hvorfor hulen laver Tomcat / Struts en ny session? Det har ikke noget med session-timeout at gøre, den har jeg haxxet med.
Ja, men jeg har ikke jad'et UrlRewriteFilter'et og kigget efter invalidate der ... man kan måske sætte en listener på sessionen og finde ud af hvem der kalder invalidate?
/************************************************************** * * >>>>>>>> DO NOT RUN THIS CODE IN PRODUCTION <<<<<<<< * *************************************************************/ public class SessionWatchDog implements HttpSessionListener { public void sessionCreated(HttpSessionEvent se) { } public void sessionDestroyed(HttpSessionEvent se) { throw new RuntimeException("Der er en som invalidater"); } }
Ja, Arne - jeg har også læst javadoc'en. På en eller anden mystisk måde bliver sessionen de-associeret fra request'ene - den bliver ikke destrueret - og en ny session oprettes til brugerens request - sker ca. hver 4.-5. request...
Så Arne ... TCPMon hjalp mig med at finde problemet. Der blev sendt flere sæt af mine cookies - pga. jeg ikke satte path'en til "/". I min C:\Documents and Settings\[Bruger]\Cookies kunne jeg se at flere .txt-filer blev modificeret - én for hver path og til sidst var der simpelthen ikke plads til jsessionid i HTTP Request Headeren. Jeg har altid troet at en cookie tilhørte et domæne, og dermed slut. Det med path kom helt bag på mig ... satans cookies. Nå, men jeg håber at andre, der får dette suspekte problem finder denne diskussion.
Det med de flere sæt cookies blev først et problem efter jeg indførte UrlRewriteFilter - hvor URL'ernes request-parametre bliver lagt ind som sti-elementer istedet: search.do?country=DK -> search/DK
Jovist, men er de fleste web-udviklere mon ikke klar over, at path-attributten eksisterer i en cookie? Ved siden af domain. Det var derfor jeg kaldte det en rookie-fejl.
Ved jeg ikke - jeg bruger aldrig eksplicitte cookies.
Men uanset hvad, så var sammenhængen mellem symptomet og årsagen ikke klar.
De fleste fejl er ret banale, når man først har identificeret fejlen.
Men det kan sommetider være meget svært at identificere fejlen.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.