Ja osobne bych se obecne vyhybal HttpSession jako cert krizi, ale kdyz uz je to nutne - mnou popsany zpusob drasticky omezuje dotazy do DB. Perzistenci si pak resi uzivatel sam, nenechava to na servlet containeru... minimalne to ma tu vyhodu, ze pri padu stroje a prechodu na jiny uzivatel o HttpSession neprijde, oz se take pocita...
2009/9/15 Stöhr Miroslav RNDr. Ph.D. <mist...@cpoj.cz>: > Ještě bych doplnil: K pozornosti vřele doporučuji interface > HttpSessionActivationListener, HttpSessionAttributeListener, > HttpSessionBindingListener a HttpSessionListener. > > Perzistetním session bych se osobně vyhýbal obloukem, pokud tedy nejde o > maličkou aplikaci pro pár uživatelů. A to nikdy nevíte předem :-)) No flame, > prosím! > > To co ale nejvíce potřebujete je obyčejný Filter, který při příchodu > uživatele zkontroluje session, a pokud je nová, přesměruje ho na nějakou > startovací stránku. > > Mirek > > -----Original Message----- > From: konference-boun...@java.cz [mailto:konference-boun...@java.cz] On > Behalf Of Oto Buchta > Sent: Monday, September 14, 2009 8:51 PM > To: Java > Subject: Re: expirace HttpSession > > Dalším možným řešením je používat perzistentní session - ideálně do Cookies > si dát jednu dočasnou sušenku se sessionId a pri změně stavu session si ji > uložit do DB. Když session vyexpiruje, podívat se do Cookies, jestli je tam > nějaké ID a pokud ano, vytvořit novou HttpSession... . Cookies jsou relativně > bezpečný způsob jak odstínit záložky či jinak uložené přeposlané odkazy. Ano, > samozřejmě je tu trošku ideologický RESTový problém :-0, ale když už se > používá HttpSession... > > 2009/9/13 Rastislav Rehak <re...@eea.sk>: >> Ahoj >> >> o session sa mozes dozvediet zaujimave veci cez metody : >> HttpServletRequest.getRequestedSessionId() the session id specified >> by this request, or null if the request did not specify a session id >> , alebo HttpSession.isNew() true if the session has been created by >> the server but the client has not yet acknowledged joining the >> session; false otherwise >> . >> >> >> Takze mozu nastat tri situacie : >> 1. Uzivatel prave prisiel na stranku - session is new, >> requestedSessionId == null . >> 2. Uzivatel ma platnu session - session != new 3. Prvy request po >> expirovanej session - session is new, requestedSessionId != null >> >> prve dva pripady su jasne. treti pripad - zobrazis mu spravu , ze jeho >> session expirovala a posles ho napriklad na home stranku. >> Problem s tretim pripadom je, ze ked ked ma niekto linku s JSESSIONID >> ( napriklad bookmark, google ) a niekto na nu klikne, tak nastane >> treti pripad aj ked sa jedna o novu session. >> >> Mnohe frameworky ti riesia vyrabanie objektov pre session takze tam je >> nova session dost transparentna. >> >> Rasto >> >> tomasjur...@email.cz wrote: >>> >>> Dobrý den >>> >>> do HttpSession webové aplikace si obecně většinou ukládám info o >>> uživately, stavy aplikace, jiné objekty, ... >>> Pokud dojde k expiraci dané session, například z důvodu dlouhé >>> nečinnosti na straně uživatele, aplikace vyhodí vyjímku >>> NullPointerException, protože došlo ke ztrátě objektů v dané session. >>> >>> Jak se toto řeší? Při expiraci session a ztrátě objektů v session >>> uložených mám uživatele někam přesměrovat? >>> >>> děkuji za cenou radu >>> Tomáš Jurman >>> >>> >> >