Zaawansowane aplikacje internetowe EJB 1 Rozróżniamy dwa rodzaje beanów sesyjnych: Stateless Statefull Celem tego laboratorium jest zbadanie różnic funkcjonalnych tych dwóch rodzajów beanów. Poszczególne ćwiczenia prezentują sposób przygotowania środowiska, generowania i uruchamiania prostego beana oraz przykładowej aplikacji potrafiącej uruchamiać takiego beana. Prezentowane ćwiczenia zostały wykonane w środowisku Oracle JDeveloper 10.1.3.4.0 (do pobrania ze strony: http://www.oracle.com/ ). Ćwiczenie 1 W tym ćwiczeniu zostanie przygotowane środowisko pozwalające na wykonanie ćwiczeń w repozytorium programu JDeveloper zostanie stworzona odpowiednia aplikacja i projekt. 1) Po uruchomieniu programu Oracle JDeveloper należy utworzyć nową aplikację. W tym celu wybierz opcję: File -> New. W wyświetlonym oknie zaznacz chęć utworzenia nowej aplikacji (wygląd okna może się różnić od poniższego): Kliknij OK. 2) Następny ekran pozwala na ustawienie właściwości tworzonej aplikacji. Wprowadź: nazwę aplikacji, nazwę katalogu, w którym znajdą się jej pliki, prefiks dla pakietów tworzonych w ramach tej aplikacji i wybierz aplikację bez wzorca
Kliknij OK 3) Kolejnym krokiem jest stworzenie projektu w ramach aplikacji wprowadź nazwę projektu: stateless Kliknij OK. Ćwiczenie 2 Ćwiczenie będzie polegało na wygenerowaniu szkieletu beana sesyjnego typu stateless i analizie jego kodu. W tym celu: 1) W widocznym nawigatorze aplikacji zaznacz utworzony w poprzednim ćwiczeniu projekt; 2) Następnie wybierz opcję: File -> New, lub z menu kontekstowego wybierz opcję New.
3) W wyświetlonym oknie wybierz chęć utworzenia beana (sesyjnego) Kliknij OK. oraz Dalej. 4) W wyświetlonym kreatorze ustaw odpowiednie parametry (wersja specifikacji: EJB 3.0) Klinij Dalej 5) Określ nazwę i typ dla tworzonego beana
Kliknij Dalej 6) Określ nazwę klasy beana Klinij Dalej 7) W ostatnim kroku określ typy i nazwy implementowanych interfejsów (dla potrzeb tego ćwiczenia interfejs zdalny jest zbędny, ale można go wyspecyfikować):
Kliknij Zakończ. Przeanalizuj wygenerowany kod i zwróć uwagę na wykorzystane adnotacje 8) W oknie struktury (View -> Structure) kliknij prawym przyciskiem na katalog Fields i zdefiniuj zmienną o nazwie Counter (bez automatycznych metod):
Kliknij OK 9) Zdefiniuj dwie metody o następującej specyfikacji: public String gethello() zwraca tekst: "Hello from Stateless Java Bean " public Integer getcounter() zwraca wartość: counter++ W tym celu w oknie struktury kliknij prawym klawiszem myszy na katalog Methods i w wyświetlonym oknie wpisz nazwę metody oraz wybierz zwracany typ:
Klinik OK. Analogicznie utwórz metodę getcounter. 10) Uzupełnij definicje metod oraz zainicjuj zmienną Counter: package stateless; import javax.ejb.stateless; @Stateless(name="StatelessEJB") public class StatelessEJBBean implements StatelessEJB, StatelessEJBLocal { Integer Counter = 0; } public StatelessEJBBean() { } public String gethello() { return "Hello from Stateless Java Bean"; } public Integer getcounter() { return Counter++; } 11) Po wykonaniu powyższych czynności zapisz wszystkie pliki, uruchom utworzonego beana wewnątrz wbudowanego serwera aplikacji (OC4J) opcja: Run, oraz przeanalizuj wyświetlane komunikaty
Ćwiczenie 3 Utwórz przykładową aplikację korzystającą z metod udostępnianych przez beana: 1) W oknie aplikacji kliknij prawym przyciskiem myszy na pliku StatelessEJBBean.java. 2) Z menu rozwijalnego wybierz New Sample Java Client Kliknik OK. 3) Przeanalizuj wygenerowany kod. Analiza wygenerowanego kod powinna pomóc zrozumieć sposób wykorzystywania komponentów EJB przez aplikacje (w tym wypadku została wygenerowana aplikacja konsolowa, ale sposób dostępu i wywoływania metod beana jest identyczny zarówno w aplikacjach typu serwlet, czy też beany wywołujące się na wzajem). Należy wskazać w wygenerowanym kodzie fragmenty odpowiedzialne za utworzenie instancji beana oraz wywołania jego metod. 4) W kodzie powtórz kilkakrotnie linię kodu odpowiedzialną za wywołanie metody zwracającej stan licznika: System.out.println( statelessejb.getcounter( ) ); 5) Zapisz wszystkie pliki i uruchom przykładową aplikację; przeanalizuj jej wyniki (jeśli uruchomienie nie powiedzie się za pierwszym razem, należy ponownie przeanalizować kody obu plików, uruchomić najpierw beana a następnie klienta).
6) Uruchom kilka procesów przykładowej aplikacji, aby w ten sposób zasymulować zachowanie beana w środowisku rzeczywistego serwera aplikacji, gdzie bardzo często wielu użytkowników równocześnie korzysta z tych samych komponentów. Ćwiczenie 4 W tym ćwiczeniu należy utworzyć beana sesyjnego typu stateful, zaimplementować w nim funkcjonalność identyczną, jak w bezstanowym beanie z poprzednich ćwiczeń, wygenerować przykładową aplikację i porównać wyniki jej działania z wynikami aplikacji z poprzednich ćwiczeń. Pracę należy rozpocząć od utworzenia nowego projektu w ramach tworzonej w tym ćwiczeniu aplikacji. 1) W oknie aplikacji kliknij prawym przyciskiem myszy na nazwę EJB1. Wybierz New... następnie w panelu kategorii wybierz Projects i w panelu Items: Empty Projects: Kliknij OK. 2) Projektowi nadaj nazwę stateful
Kliknij OK. 3) W ramach tego projektu utwórz beana sesyjnego typu stanowego (naśladuj tok postępowania z ćwiczenia 2). 4) Po wykonaniu wszystkich kroków występujących w ćwiczeniu 2. wykonuj dokładnie te same kroki, co w ćwiczeniu 3. W szczególności zasymuluj równoległą pracę kilku użytkowników przykładowej aplikacji.