Avatar billede ufferoenne Nybegynder
21. november 2003 - 21:42 Der er 16 kommentarer

Tomcat 4.1.28 Session Problem

Hej Tomcat specialister

Jeg har et kæmpe problem med sessions i Tomcat. De virker simpelthen ikke. Problemet opstår når jeg sætter et objekt på session: session.setAttribute("Test","TestValue");

Næste gang jeg reloader siden er Test forsvundet.

En yderligere test har vist at sessionens creationTime skifter hvergang jeg reloader siden, og det bør vel ikke ske...:

session.getCreationTime()

Hvad er der galt?

Mvh Uffe
Avatar billede arne_v Ekspert
21. november 2003 - 22:06 #1
JSP eller servlet ?
Avatar billede ufferoenne Nybegynder
21. november 2003 - 22:54 #2
Well, det er vel egentlig begge dele. Jeg har en frontcontroller der tager imod alle requests(servlet) og sender det videre til en JSP-side.

Kan det evt. have noget at gøre med JK (1.3.26) modulet i Apache?
Avatar billede arne_v Ekspert
21. november 2003 - 23:02 #3
Containeren holder styr på sessionen via enten en session cookie
eller URL rewriting.

Hvis det er URL rewriting (f.eks. fordi browseren ikke accepterer
cookies), så skal:
  - der redirectes på en speciel måde i servletten
  - modJK skal kunne håndtere det
Avatar billede ufferoenne Nybegynder
21. november 2003 - 23:10 #4
- Hvordan ser man hvordan den gør nu - rewriting/cookie? Såvidt jeg kan se sætter den ikke nogen cookies.

- Kan man selv bestemme hvordan den skal gøre? Og hvor sætter man det i givet fald.

- Hvordan redirecter man på en speciel måde?

Jeg har lavet en lynhurtig test ved at oprette en simpel webapp, uden frontcontroller. Der virker det fint.
Avatar billede arne_v Ekspert
21. november 2003 - 23:14 #5
Man skal ikke bruge:

response.sendRedirect(url);

men:

response.sendRedirect(response.encodeRedirectURL(url));
Avatar billede ufferoenne Nybegynder
21. november 2003 - 23:20 #6
Jeg bruger ikke redirects, men forwards:

  RequestDispatcher rd = context.getRequestDispatcher(renderURI);
  rd.forward(request, response);

Gør det samme sig gældne her...med response.encodeRedirectURL(url)?

Stadig, hvordan ser man om den bruger rewriting eller cookies? Det må stå i en eller anden konfigurations fil.....
Avatar billede arne_v Ekspert
21. november 2003 - 23:25 #7
Nej - med forward skulle det ikke være en issue.
Avatar billede arne_v Ekspert
21. november 2003 - 23:27 #8
Men hvis du bruger links i din JSP kode, så ...

response.encodeURL(url)
Avatar billede arne_v Ekspert
21. november 2003 - 23:29 #9
Hvis context tagget i server.xml har cookies="false", så bruger den
URL rewriting.

Hvis ikke så forsøger den me dcookies og hvis ikke browseren accepterer
det, så skifter den til URL rewriting.
Avatar billede ufferoenne Nybegynder
21. november 2003 - 23:52 #10
cookies tagget er sat til true, og cookies er slået til på min maskine. Alligevel kan jeg ikke se at der bliver sat nogle cookies :-( Det ser ikke ud som om der foregår noget url-rewriting.....forstår det ikke. Vil sove på det...
Avatar billede ufferoenne Nybegynder
26. november 2003 - 09:51 #11
Har stadig ikke fået løst mit problem. Kan sige så meget at den ikke bruger cookies til session handling, da en test afslørede at request.getCookies() returnerede null. Nogle gode forslag?
Avatar billede arne_v Ekspert
26. november 2003 - 23:14 #12
Prøv og sæt cookies=false og brug:
  response.sendRedirect(response.encodeRedirectURL(url));
til redirect og:
  response.encodeURL(url)
til links.
Avatar billede ufferoenne Nybegynder
27. november 2003 - 00:50 #13
Hmmm det virkede sgu heller ikke. Satans også! :-) Begynder at overveje om man skal skrive sin egen SessionHandler, men det kan bare ikke være rigtigt!
Avatar billede ufferoenne Nybegynder
30. december 2004 - 15:13 #14
Genoptager lige denne her sag. Fik løst problemet, troede jeg, ved at installere hele pivetøjet på en Linuxbox. Det har dog vist sig at visse brugere stadig har problemer med sessionen. Selv kører jeg WinXP med Explorer 6.0. Det mærkelige er at andre brugere, som kører med nøjagtig samme opsætning, har problemer, og de har ikke slået cookies fra i indstillingerne! Mærkeligt....er der andre der har oplevet samme slags problemer? Kender i evt. til en bugfix fra Microsoft som måske fucker tingene op?
Avatar billede ufferoenne Nybegynder
30. december 2004 - 16:14 #15
Så fik jeg kørt Service Pack 1 til XP på min maskine, og nu virker det heller ikke på den. Er der nogen der kender til nogle known bugs mellem Tomcat 4.1.28 og WinXP sp1 med explorer 6?

Det virker fint, hvis man kører med Mozilla.
Avatar billede ufferoenne Nybegynder
03. februar 2004 - 14:11 #16
Så har jeg fundet ud af lidt mere. Det viser sig at nyere versioner af Explorer og service packs, har det med forbyde alle cookies fra intranets. Det er i hvert fald ikke lykkedes mig at slå det til.

Nu er der jo så en anden mulighed.....URL-rewriting. Det har dog også vist sig at give problemer idet apachen, der ligger ovenpå, åbenbart volder besvær. Hvis man kører uden Apache skulle det virke fint nok.

Jeg har læst mig frem til, på diverse fora, at man skal lave en lille rewriterule i Apache, men de henviser alle til Apache faq-o-matiq for Jakarta, som åbenbart ikke kører mere.

Nu kommer spørgsmålet: Er der nogen der har fået session handling med URL-rewriting til at virke, når tomcat har en apache ovenpå? Og hvem kender den lille fixe rewriteRule der skal til for at det virker?
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester