Zaawansowane aplikacje internetowe
Transkrypt
Zaawansowane aplikacje internetowe
D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44 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 12.1.2.0.0 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): Wybieramy opcję Custom Application 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 D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc Kliknij OK Tych opcji nie ma w custom application 2009-lis-23, 17:44 Zamiast ok wciskać Next 3) Kolejnym krokiem jest stworzenie projektu w ramach aplikacji –wprowadź nazwę projektu: W tym oknie jest więcej opcji, które stateless zostawiamy bez zmian i wciskamy next Kliknij OK. Istnieje jeszcze jedno okno: Select Build Environment - zostawiamy w nim zaznaczoną opcję: use JDeveloper's default build tools i wciskamy finish. Ćwiczenie 2 Ćwiczenie będzie polegało na wygenerowaniu szkieletu beana sesyjnego typu stateless i analizie jego kodu. W tym celu: Wybieramy opcję New - from Gallery 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. D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44 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) Wybieramy nowszego beana JavaBeans 3.1 (Java EE 6.0) Klinij Dalej 5) Określ nazwę i typ dla tworzonego beana D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44 To okno trochę się różni, nadajemy nazwę dla EJB, reszta bez zmian, naciskamy next 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ć): D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44 Zamiast tej opcji jest - implement Timed Object Interface (zostawiamy puste i next) Kliknij Zakończ. Przeanalizuj wygenerowany kod i zwróć uwagę na wykorzystane adnotacje Adnotacje są w logu dostępnym w Window - log 8) W oknie struktury (View -> Structure) kliknij prawym przyciskiem na katalog Fields Włączenie widoku struktury - Window/structure. Zaznaczamy w widoku aplikacji naszego beana.java, w widoku struktury PPM na klasę naszego beana, wybieramy Enterprise JavaBeans(EJB) - New Field. i zdefiniuj zmienną o nazwie Counter (bez automatycznych metod): D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44 Kliknij OK Analogicznie jak w poprzedniej notatce, tylko wybieramy new Method zamiast new 9) Zdefiniuj dwie metody o następującej specyfikacji: field 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: D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44 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 Tutaj wbudowanym serwerem jest WebLogic Serwer, wybieramy localhost i podajemy haslo D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44 Ć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). Uruchomienie klienta - PPM na kliencie i run D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44 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 Zmodyfikowany kod klienta z użyciem wątków znajduje się w pliku StatelessEJBClient.pdf 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: Wybieramy Custom Project Kliknij OK. 2) Projektowi nadaj nazwę stateful D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44 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. Zmodyfikowany kod klienta z użyciem wątków znajduje się w pliku StatefulEJBClient.pdf