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: [email protected] [mailto:[email protected]] 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 <[email protected]>:
> 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
>
> [email protected] 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
>>
>>
>