expirace HttpSession

Oto Buchta tapik na buchtovi.cz
Úterý Září 15 10:36:22 CEST 2009


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. <MiStohr na 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-bounces na java.cz [mailto:konference-bounces na 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 <rehak na 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
>>
>> tomasjurman na 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
>>>
>>>
>>
>



Další informace o konferenci Konference