Andrzejczyk.Koziatek.Matysiak.Rodak Web Services

Transkrypt

Andrzejczyk.Koziatek.Matysiak.Rodak Web Services
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.2.4.0 (do
pobrania z http://www.oracle.com/technetwork/developer-tools/jdev/downloads/archives-090457.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 Custom
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 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. Podobnie jak w punkcie 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 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 grupa6
* @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 EuclideanAlgorithm() {
super();
}
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;
}
}
Zapisz zmiany w pliku EuclideanAlgorithm.java przy pomocy kombinacji klawiszy Ctrl+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 View
Documentation. Ekran komputera powinien teraz wyglądać 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.

Podobne dokumenty