ZAWWW-2st1.2-w10.tresc-1.0-Slajd8
Korzystanie z komponentów sesyjnych
Komponenty sesyjne występują w dwóch wersjach: stanowej i bezstanowej. Bezstanowy komponent sesyjny nie przechowuje żadnej informacji o stanie sesji klienta i po jednorazowym wykonaniu metody wywołanej przez klienta ta sama instancja komponentu może być wykorzystana do obsługi innego żądania innego klienta. Stanowy komponent sesyjny pamięta stan sesji klienta, ta sama instancja komponentu może być wykorzystana do obsługi żądania nowego klienta dopiero po zakończeniu sesji aktualnie obsługiwanego klienta. Komponenty stanowe wymagają więc większej ilości zasobów i mają negatywny wpływ na skalowalność i wydajność aplikacji. Wybór rodzaju wykorzystanego komponentu sesyjnego powinien być jednak podyktowany nie skalowalnością, lecz logiką procesu biznesowego implementowanego przez komponent. Jeśli proces biznesowy jest bezkonwersacyjny (tzn. można zrealizować proces biznesowy za pomocą jednego wywołania metody), wówczas należy użyć komponentów bezstanowych. Jeśli proces biznesowy jest konwersacyjny, wówczas zdecydowanie należy wykorzystać komponenty stanowe. Wykorzystanie w drugim przypadku komponentów bezstanowych powoduje niepotrzebną komplikację aplikacji i wiąże się z koniecznością przesyłania stanu sesji w każdym wywołaniu.
Jeśli aplikacja jest prosta i dostęp do aplikacji zawsze odbywa się poprzez warstwę prezentacji (serwlety i widoki JSP), to wówczas stan sesji można przechowywać w warstwie prezentacji, np. za pomocą obiektu HTTPSession. Jeśli jednak aplikacja obsługuje różne rodzaje klientów HTTP komunikujące się także bezpośrednio z warstwą biznesową, wówczas stan sesji powinien być przechowywany w warstwie biznesowej za pomocą stanowych komponentów sesyjnych.