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.