Piotr Błaszkowski WebServices2 JDeveloper 11

Transkrypt

Piotr Błaszkowski WebServices2 JDeveloper 11
Zaawansowane aplikacje internetowe – laboratorium
Web Services (część 2).
Celem ćwiczenia jest przygotowanie prostej aplikacji prezentującej technologię usług
sieciowych (ang. Web Services). Przygotowana klasa języka Java zostanie opublikowana w
postaci usługi sieciowej i udostępniona na zewnątrz przez osadzenie w serwerze aplikacji.
Dodatkowo, przygotowany zostanie klient usługi testujący jej poprawność. Do wykonania
ćwiczenia potrzebne jest zintegrowane środowisko JDeveloper Studio 11.1.1.3.0 (do
pobrania z http://www.oracle.com/technetwork/developer-tools/jdev/downloads/soft11098086.html).
1. Uruchom narzędzie JDeveloper.
2. Jeśli nie ukończyła(e)ś laboratorium Web Services (część 1) i nie posiadasz jeszcze
aplikacji, to wykonaj kroki 2, 3 i 4 z laboratorium Web Services (część 1).
3. Kliknij prawym przyciskiem myszy na ikonie aplikacji Laboratoria i z menu
kontekstowego wybierz New Project.
Rozwiń gałąź kategorii General i zaznacz kategorię Projects. W prawym oknie zaznacz
element Generic Project. Kliknij przycisk OK.
4. W kolejnym oknie, w polu Project Name wpisz „WebServices2”. Kliknij przycisk Finish.
5. Kliknij prawym przyciskiem myszy na ikonie projektu WebServices2.
Z menu kontekstowego wybierz opcję New… W oknie kategorii zaznacz gałąź General.
W kategorii General wybierz kategorię Java. Z listy dostępnych elementów w oknie po
prawej stronie wybierz Java Class. Kliknij przycisk OK.
6. Pierwszym krokiem w tworzeniu usługi sieciowej będzie zdefiniowanie własnej klasy
reprezentującej wyjątek polegający na niepoprawnym wywołaniu usługi, np. poprzez
podanie jako parametrów liczb ujemnych albo liczb nie będących liczbami
całkowitymi.
Wpisz nazwę klasy: „WrongArgumentsException” w polu Name. Wpisz nazwę pakietu:
„webservices2” w polu Package, nazwę nadklasy:„java.lang.Exception” w polu Extends.
Resztę pól w kreatorze pozostaw bez zmian. Kliknij przycisk OK.
7. Plik WrongArgumentsException.java został automatycznie załadowany do
edytora. Uzupełnij plik poniższym kodem:
package webservices2;
public class WrongArgumentsException extends Exception {
public WrongArgumentsException(Throwable throwable) {
super(throwable);
}
public WrongArgumentsException(String string, Throwable throwable) {
super(string, throwable);
}
public WrongArgumentsException(String message) {
super(message);
}
public WrongArgumentsException() {
super();
}
}
8. Programy stanowiące usługi sieciowe powinny być szczególnie dobrze
dokumentowane ze względu na to, że ich głównymi użytkownikami są użytkownicy
zdalni. Stąd, na projektant(k)ach usług sieciowych ciąży obowiązek starannego
opisywania API. W przypadku języka Java najbardziej odpowiednim narzędziem jest
Javadoc. Uzupełnij kod pliku WrongArgumentsException.java o komentarze
Javadoc. Przykładowa wersja finalna pliku może wyglądać tak.
package webservices2;
/**
* The class <code>WrongArgumentsException</code> is a form
* of <code>Throwable</code> and indicates the condition when input
* parameters for the Web Service are incorrect.
*
* @author Mikolaj Morzy
* @version 0.1
*/
public class WrongArgumentsException extends Exception {
/**
* Constructs a WrongArgumentsException with the specified detail
* message.
*
* @param message the message describing this particular exception.
*/
public WrongArgumentsException(String message) {
super(message);
}
}
Zapisz zmiany w pliku WrongArgumentsException.java przy pomocy kombinacji klawiszy
Ctrrl+S.
9. Kliknij prawym przyciskiem myszy na ikonie projektu WebServices2 i z menu
kontekstowego wybierz New…, zaznacz kategorię General i wybierz element
Java Class. Kliknij przycisk OK.
Wpisz nazwę klasy: „EuclideanAlgorithm” w polu Name. Wpisz nazwę pakietu:
„webservices2” w polu Package, nazwę nadklasy: „java.lang.Object” w polu Extends.
Resztę pól w kreatorze pozostaw bez zmian. Kliknij przycisk OK.
10. Do znajdowania największego wspólnego podzielnika dwóch liczb wykorzystamy
algorytm Euklidesa (http://en.wikipedia.org/wiki/Euclids_algorithm).
Zmień zawartość EuclideanAlgorithm.java w następujący sposób:
(nie zapomnij o udokumentowaniu poszczególnych elementów).
package webservices2;
/**
* The <code>EuclideanAlgorithm</code> class is an implementation
* of the well-known algorithm attributed traditionally to Euclid.
* The algorithm takes as input two positive integers and computes
* the greatest common divisor of the two. The first appearance of
* the algorithm dates back to 300 BC in Euclid's <i>Elements</i>.
*
* @author Mikolaj Morzy
* @version 0.1
*/
public class EuclideanAlgorithm {
/**
* Computes the greatest common divisor of the two
* input positive integers
*
* @param a The first number
* @param b The second number
* @return The greatest common divisor of the input parameters
* @throws WrongArgumentsException If one of the parameters
* is not positive, or when input parameters are not integers
*/
public int GreatestCommonDivisor(String a, String b)
throws WrongArgumentsException {
int i, j;
try {
i = Integer.parseInt(a);
j = Integer.parseInt(b);
}
catch (NumberFormatException e) {
throw new WrongArgumentsException("Parametry muszą być liczbami
całkowitymi!");
}
if ((i < 0) || (j < 0))
throw new WrongArgumentsException("Parametry muszą być liczbami
dodatnimi!");
while (i != j)
if (i > j)
i -= j;
else
j -= i;
return i;
}
public EuclideanAlgorithm() {
super();
}
}
Zapisz zmiany w pliku EuclideanAlgorithm.java przy pomocy kombinacji klawiszy
Ctrrl+S.
11. W nawigatorze obiektów rozwiń gałąź reprezentującą projekt WebServices2, a
następnie rozwiń gałąź Application Sources. Zaznacz węzeł reprezentujący pakiet
webservices2. Z menu głównego wybierz Build->Javadoc webservices2.
Po zakończeniu generowania dokumentacji w oknie dziennika (u dołu ekranu) kliknij na
odnośnik. Ekran komputera powinien wyglądać teraz tak:
12. W kolejnym kroku udostępnimy stworzoną klasę EuclideanAlgorithm.java
(wraz z pomocniczą klasą WrongArgumentsException.java) w postaci usługi sieciowej.
Kliknij prawym przyciskiem myszy na ikonie pliku EuclideanAlgorithm.java znajdującym
się w folderze webservice2, w oknie Application Nawigator i z menu kontekstowego
wybierz opcję Create Web Service.
W kolejnym oknie wybierz wersję „J2EE 1.4 JAX-RPC, with suport for 10.3 WLS”
i kliknij przycisk Next.
13. W kolejnym oknie w polu Web Service Name wpisz „EuclideanAlgorithmService”,
W polu Port Name wpisz „EuclideanAlgorithmPort”.
Resztę kroków kreatora pomijamy, przyjmą one wartości domyślne. Kliknij przycisk Finish..
14. Po zakończeniu kreatora usługi sieciowej, pojawił się nowy plik
EuclideanAlgorithmService.wsdl (katalog wsdl w katalogu Web Content) w drzewie
projektu:
15. Kliknij prawym przyciskiem myszy na ikonie EuclideanAlgorithmService znajdującego
się w drzewie projektu w katalogu webservices2
i z menu kontekstowego wybierz opcję Run. Poczekaj na konfigurację i uruchomienie
serwera IntegratedWebLogicServer.
Dostajemy informację że usługa działa („has been started on..”);
16. Kliknij na wygenerowanym przez serwer adresie usługi wsdl, Target URL:
http://localhost:7101/Laboratoria-WebServices2-context-root/EuclideanAlgorithmPort
Pojawi się nowe okno:
Skopiuj z pola URL (na samej górze) adres usługi, do swojej przeglądarki internetowej i
naciśnij Enter:
W linku „WSDL page” mamy pełną informację o uruchomionej usłudze w postaci drzewa
XML. Wybierz link „Test page”. Poczekaj na konfigurację usługi podczas pierwszego
uruchomienia:
17. Po chwili w oknie przeglądarki mamy już dostęp do naszej usługi WSDL:
Podaj dwie liczby i spróbuj wygenerować informację o ich Największym Wspólnym
Dzielniku. Kliknij przycisk „GreatestCommonDivisor” znajdujący się po prawej stronie.
18. W nowym oknie otrzymamy szczegółowe informacje w postaci dwóch dokumentów
SOAP:
W zakładce „Service Request” znajdują się informacje o dwóch wpisanych przez nas
liczbach, natomiast w „Service Response” otrzymujemy największy wspólny dzielnik
wpisanych liczb. Aby ponownie wyliczyć największy wspólny dzielnik, użyj przycisku
„Re-Invoke” znajdującego się po prawej stronie lub przycisku „Show Operations”
znajdującego się po stronie lewej na górze.
19. Przetestuj usługę wpisując różne liczby, w szczególności liczby ujemne czy liczby nie
będące liczbami całkowitymi.