15 styczeń 2009

Enterprise JavaBeans 3.0: bezstanowe ziarna sesyjne

No to teraz już wszystko będzie proste ;-) W komentarzu do poprzedniego posta napisałem, że ziarna nazywane są sesyjne ze względu na nazwanie tak czasu wywołania/trwania metody biznesowej. Innym określeniem tego procesu jest konwersacja. Stateless Session Beans (@Stateless) nie przechowują żadnego stanu, dlatego wywołanie danej metody może zakończyć cykl życia bezstanowego ziarna (tak na chama to w stanowych też, ale nie są one po to, żeby być tak na chwilę ;-)). Generalnie rzecz biorąc każde ziarno kiedyś powstaje i kiedyś kończy swój żywot. Albo poprzez time out serwera albo wywołanie metody z adnotacją @Remove (ale to cecha ziaren stanowych).

Stateless session beans są bardzo "wydajne". Załóżmy, że mamy 1000 klientów naszej aplikacji. Mimo tak dużej ilości klientów korzystających z naszego ziarna kontener nie będzie tworzył tak dużej ilości instancji. Dlatego, że:

  • mało prawdopodobne żeby wszyscy naraz korzystali z tego samego
  • ziarenka odwalą swoją robotę i czekają aż będą mogły znowu pomóc, czyli istniejące instancje są przetrzymywane w puli i używane na nowo w razie potrzeby. Jest to pooling.
Występują tutaj dwa cykle życia:
  • @PostConstruct - metoda tak adnotowana zostanie wywoałana po stworzeniu instancji bean'a oraz wstrzyknięciu zależności,
  • @PreDestroy - wywoływany tuż przed zniszczeniem instancji ziarna.
Oprócz wcześniej wspomnianych adnotacji interfejsu biznesowego @Local i @Remote, bezstanowe ziarna posiadają jeszcze jeden dodatkowy - @WebService. Żadne inne ziarno nie może posiadać tak oznaczonego interfejsu z dość prostej przyczyny. Bezstanowe ziarna nie przetrzymują stanu, który musiałby być jakoś przesłany przez HTTP.

0 komentarze: