Temat Cele Zadania

Transkrypt

Temat Cele Zadania
Temat
Stworzenie systemu składającego się z usługi sieciowej (ang. web service)
utrzymującej swój stan wewnętrzny (ang. statefull) oraz komunikującej się z
nią aplikacji klienckiej.
Cele
1. Zapoznanie się z podstawowymi elementami składającymi się na kompletny
system usługi sieciowej utrzymującej swój stan wewnętrzny; przeprowadzenie
przy użyciu środowiska Oracle9i JDeveloper procesu implementacji kodu takiej
aplikacji obejmującego kolejne etapy:
- konfiguracja środowiska programistycznego oraz serwerowego,
- opublikowanie usługi sieciowej (przygotowanej uprzednio w postaci
gotowego kodu źródłowego),
- implementacja aplikacji klienckiej działającej w środowisku tworzenia
aplikacji
2. Zapoznanie się z techniką zapewnienia ciągłości wirtualnej sesji HTTP użytą
w celu wielokrotnego komunikowania się z pojedynczą instancją usługi web
service.
3. Zapoznanie się z funkcjonalnościami środowiska wspomagającymi tworzenie
aplikacji typu web service utrzymującej swój stan wewnętrzny.
Zadania
1. Uruchomić i skonfigurować środowisko tworzenia aplikacji i serwer aplikacji.
1.1. Uruchomić serwer aplikacji Oracle9iAS Containers for J2EE (uruchomić serwer
w środowisku maszyny wirtualnej Java wchodzącym w skład pakietu Oracle9i
JDeveloper korzystając ze skryptu \jdev903\jdev\bin\start_oc4j.bat).
1.2. Uruchomić środowisko tworzenia aplikacji Oracle9i JDeveloper
(\jdev903\jdev\bin\jdevw.exe).
1.3. Utworzyć i przetestować połączenie pomiędzy środowiskiem Oracle9i JDeveloper
a serwerem Oracle9iAS Containers for J2EE.
1.3.1. Utworzyć nowe połączenie typu “Oracle9iAS-StandAlone” (Connections>Application Server->New Connection->Oracle9iAS-StandAlone).
1.3.2. Ustawić identyfikator użytkownika (Username) jako "admin", a hasło jako
"welcome" jednocześnie zaznaczając opcję "Deploy Password”.
1.3.3. Ustawić lokalizację URL jako “ormi://127.0.0.1/”.
1.3.4. Ustawić opcję Target Web Site jako “http-web-site’.
1.3.5. Jako wartość pola “Local Directory Where admin.jar for Oracle9iAS is
installed" wskazać lokalizację pliku admin.jar (zwykle w katalogu \j2ee\home).
1.3.6. Przetestować utworzone połączenie.
2. Uruchomić (opublikować) i przetestować aplikację sieciową utrzymującą swój
stan wewnętrzny
2.1. Otworzyć plik przestrzeni roboczej zawierającej gotowy kod źródłowy prostej
usługi sieciowej (\STATEFUL\WorkspaceStatefulJava.jws)
2.2. Zlokalizować i zapoznać się z zawartością pliku zawierającego kod źródłowy
klasy, której metoda udostępniana jest jako implementowana w ramach ćwiczenia
usługa sieciowej; opisać przewidywane działanie usługi sieciowej
2.3. Utorzyć postać wykonywalną (Make) zlokalizowanej klasy.
1
2.4. Do struktury projektu (ProjectStateful.jpr) dodać usługę sieciową wraz z
definicjami potrzebnymi do jej opublikowania (General->Web Service->Java Web
Service) przy użyciu wizualnego komponentu środowiska JDeveloper Web
Service Publishing Wizard.
2.4.1. W pierwszym kroku procedury Web Service Publishing Wizard zlokalizować
klasę StatefulExampleImpl jako wartość pola “Select the class that you want to
publish as a Web service”.
2.4.2. W obrębie sekcji Options określić stanowość publikowanej usługi (zaznaczyć
pole Statefull).
2.4.3. Wybrać metody count oraz HelloWorld jako udostępniane przez usługę
sieciową.
2.4.4. W kolejnym kroku procedury Web Service Publishing Wizard zaakceptować
domyślne lokalizacje generowanego pliku WSDL, generowanego pliku
definiującego proces publikacji usługi sieciowej (web.xml) i punktu końcowego
usługi sieciowej (ang. web service endpoint) oraz domyślną konfigurację portu
serwera WWW oraz wybór konfiguracji połączenia z serwerem aplikacji
(Oracle9iAS-StandAlone).
2.5. Zapoznać się z zawartością i określić działanie wygenerowanych przez Web
Service Publishing Wizard pliku web.xml i definicji WSDL
(StatefulExampleImpl.wsdl).
2.6. Opublikować stworzoną usługę sieciową tj. serwlet komunikacji SOAP (podać
jego nazwę i określić czym różni się postać serwletu komunikacji SOAP w
przypdku usługi zachowującej swój stan wewnętrzny od przypadku usługi
bezstanowej) wraz odpowiednią z klasą Java (podać jej nazwę) zgodnie z
informacjami zawartymi w profilu WebServices.deploy wybierając opcję
Oracle9iAS_Standalone.
3. Uruchomić i przetestować aplikację kliencką usługi sieciowej
3.1. Do struktury projektu (ProjectStateless.Java.jpr) dodać aplikację kliencką
utworzonej usługi sieciowej (New->General->Web Service-> Web Service
Stub/Skeleton)
3.1.1. Użyć procedury Web Service Stub/Skeleton Wizard (automatyczne
generowanie kodu). Skorzystać z automatycznego generowania metody
głównej. Zaobserwować wynik analizy pliku WSDL prezentowany przez
środowisko Oracle9i JDeveloper w postaci listy metod udostępnianych przez
usługę sieciową.
3.1.2. Kontynuować procedurę automatycznego generowania kodu przez wybranie
odpowiedniej metody.
3.1.3. Zapoznać się z wygenerowanym kodem - klasami, ich wzajemnymi
zależnościami i głównym przeznaczeniem (ze szczególnym uwzględnieniem
komunikacji przy użyciu protokołu SOAP).
3.1.4. W odpowiednim miejscu kodu klasy Client.java dodać następujący fragment
kodu:
StatefulExampleImplStub proxy = new StatefulExampleImplStub();
System.out.println(proxy.helloWorld("Scott"));
System.out.println(proxy.count());
System.out.println(proxy.count());
// …
System.out.println(proxy.count());
2
3.2. Skompilować projekt, uruchomić klasę Client.java i zaobserwować wynik jej
działania (w oknie typu log).
3.3. Użyć narzędzia Tools->TCP Packet Monitor w celu śledzenia komunikatów
języka SOAP wymienianych pomiędzy serwerem a klientem w procesie
korzystania z usługi sieciowej.
3.3.1. Zainicjować tryb śledzenia komunikacji (Start TCP Packet Monitor |>).
3.3.2. Ponownie uruchomić klasę Client.java.
3.3.3. Zapoznać się z zapisem przepływu komunikatów przedstawionym na zakładce
History oraz z zawartością poszczególnych komunikatów przedstawioną na
zakładce Data.
3.3.4. Zaobserwować wartości pól HTTP wskazujące na sposób przesyłania
informacji identyfikującej sesje.
3.3.5. Jaki format ma informacja o stanie sesji przesyłana jako cookie? Jakie atrybuty
są w tym celu wykorzystywane i jakie są ich funkcje? Jakie wartości mają
atrybuty Name oraz Value? Czy wykorzystywane jest pole expires=DATE?
Określić regułę powtarzalności wartości pól określających parametry obiektów
typu cookie: w obrębie pojedynczej sesji oraz dwóch odrębnych sesji.
4. W analogiczny sposób (jak w punkcie 2.) opublikować i przetestować aplikację
sieciową utrzymującą stan wewnętrzny przez krótszy okres
4.1. Opublikować i przetestować aplikację sieciową przy różnych wartościach pola
session-timeout dokumentu web.xml.
4.2. Określić który z elementów aplikacji podlega modyfikacji w wyniku ponownego
opublikowania aplikacji.
4.3. Określić czy niezbędna jest rekompilacja kodu aplikacji.
4.4. Dla dwóch różnych wartości opóźnienia Timeout (np. 30 i 60 sekund)
zweryfikować doświadczalnie długość okresu braku komunikacji z instancją
usługi web service, po którym następuje wygaśnięcie sesji.
5. W analogiczny sposób (jak w punkatch 2. i 3.) uruchomić (opublikować) i
przetestować aplikację sieciową nie utrzymującą stanu wewnętrznego
5.1. Określić czym różni się (pod względem funkcjonalności oraz konfiguracji) usługa
o wartości opóźnienia session-timeout równej 0 sekund od analogicznej usługi w
wersji bezstanowej (ang. stateless).
3