Monday, 17 May 2010

Ciclul de viaţă al componentelor de tip sesiune

O componentă de tip sesiune fără stare este creată la iniţiativa containerului EJB. Containerul menţine un rezervor (pool) de instanţe ale componentelor de acest tip, astfel încât atunci când un client apelează o metodă a unei componente de tip sesiune fără stare este aleasă o instanţă a componentei din rezervor şi invocată metoda acesteia. Acest lucru este posibil deoarece starea componentei nu trebuie menţinută după încheierea execuţiei metodei. Distrugerea componentelor de tip sesiune fără stare este deasemenea efectuată prin decizia containerului EJB, de exemplu pentru eliberarea unor resurse de memorie sau atunci când o anumită componentă nu este utilizată un timp mai îndelungat. Astfel, o componentă de tip sesiune fără stare se poate găsi în timpul ciclului său de viaţă doar într-una din două stări: inexistentă şi în aştepare(ready).

O metodă a unei componente de tip sesiune fără stare poate fi marcată cu una dintre adnotările @PostConstruct sau @PreDestroy, ceea ce va face ca ele să fie apelate imediat după instanţierea componentei, respectiv înainte de distrugerea ei.

Spre deosebire de cazul componentelor fără stare, ciclul de viaţă al componentelor de tip sesiune cu stare este iniţiat de către clienţi prin solicitarea unei referinţe la o instanţă a unei componente. Pe durata ciclului său de viaţă, o componentă de tip sesiune cu stare poate fi trecută de către container din starea ready, în care componenta se află în memoria principală, într-o stare pasivă(inactivă), în memoria secundară a serverului. Re-activarea are loc atunci când un client apelează o metodă a unei instanţe pasive. Reamintiţi-vă că o componentă de tip sesiune cu stare este asociată unui client pentru toată durata conversaţiei acestuia cu serverul, care poate conţine mai multe apeluri de metode, între care trebuie păstrată starea componentei. Prin urmare o componentă de tip sesiune cu stare nu va fi în general distrusă la iniţiativa containerului! (Se poate ca o componentă de tip sesiune cu stare, pasivă, să fie distrusă de container după o perioadă îndelungată de inactivitate a clientului, timeout.)

Adnotările care pot marca una dintre metodele unei componente de tip sesiune cu stare sunt:  @PostConstruct, @PreDestroy, @PrePassivate şi @PostActivate, cu semnificaţiile evidente date de numele lor.

2 comments:

Cristina said...

You can find a little more on this subject at

http://forums.sun.com/thread.jspa?threadID=5439252&tstart=0

Anonymous said...

Cum ati traduce in romana, session pool?
Multumesc mult.