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