Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje...

34
Wielowarstwowe aplikacje internetowe - laboratorium Web Services Do wykonania ćwiczeń 1, 2 i 6, dotyczących platformy Microsoft .NET potrzebne jest zintegrowane środowisko programistyczne Microsoft Visual Studio 2005. Visual Studio 2005 jest udostępniane studentom w ramach programu MSDN Academic Alliance (http://www.microsoft.com/poland/edukacja/uczelnie/default.mspx ). W celu uzyskania pakietu instalacyjnego Microsoft Visual Studio 2005 należy skontaktować się z prowadzącym zajęcia. Spośród ćwiczeń dotyczących platformy Java EE ćwiczenia 3 i 4 zostały przygotowane z myślą o środowisku JDeveloper 10.1.3 (do pobrania z http://otn.oracle.com ), a ćwiczenie 5 – Netbeans 6.1 (do pobrania z http://www.netbeans.org/ , pakiet Web & Java EE Bundle). Autorzy ćwiczeń: Mikołaj Morzy, Marek Wojciechowski Ćwiczenie 1 Celem ćwiczenia jest utworzenie usługi Web Service umożliwiającej obliczenie całkowitego kosztu paliwa dla podanych wartości ceny litra benzyny, długości trasy w km i spalania w litrach na 100 km. 1. Uruchom środowisko Microsoft Visual Studio 2005. 2. Utwórz projekt typu ASP.NET Web Service w języku Visual C#. a) Z menu głównego wybierz FileNew Web Site. Wybierz szablon ASP.NET Web Service, język Visual C# i lokalizację File System. Zmodyfikuj zaproponowaną nazwę katalogu, zmieniając ostatni element ścieżki podkatalogów na „SpalanieWS”. (Możesz również zmienić całą ścieżkę prowadzącą do podkatalogu witryny. Może to być konieczne, gdy nie masz prawa zapisu w lokalizacji zaproponowanej przez kreator.) Kliknij przycisk OK.

Transcript of Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje...

Page 1: Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje internetowe - laboratorium Web Services Do wykonania ćwiczeń 1, 2 i 6, dotyczących

Wielowarstwowe aplikacje internetowe - laboratorium

Web Services

Do wykonania ćwiczeń 1, 2 i 6, dotyczących platformy Microsoft .NET potrzebne jest

zintegrowane środowisko programistyczne Microsoft Visual Studio 2005. Visual Studio 2005

jest udostępniane studentom w ramach programu MSDN Academic Alliance

(http://www.microsoft.com/poland/edukacja/uczelnie/default.mspx). W celu uzyskania

pakietu instalacyjnego Microsoft Visual Studio 2005 należy skontaktować się z prowadzącym

zajęcia.

Spośród ćwiczeń dotyczących platformy Java EE ćwiczenia 3 i 4 zostały przygotowane z

myślą o środowisku JDeveloper 10.1.3 (do pobrania z http://otn.oracle.com), a ćwiczenie 5 –

Netbeans 6.1 (do pobrania z http://www.netbeans.org/, pakiet Web & Java EE Bundle).

Autorzy ćwiczeń: Mikołaj Morzy, Marek Wojciechowski

Ćwiczenie 1

Celem ćwiczenia jest utworzenie usługi Web Service umożliwiającej obliczenie całkowitego

kosztu paliwa dla podanych wartości ceny litra benzyny, długości trasy w km i spalania w

litrach na 100 km.

1. Uruchom środowisko Microsoft Visual Studio 2005.

2. Utwórz projekt typu ASP.NET Web Service w języku Visual C#.

a) Z menu głównego wybierz File→New Web Site. Wybierz szablon ASP.NET Web

Service, język Visual C# i lokalizację File System. Zmodyfikuj zaproponowaną nazwę

katalogu, zmieniając ostatni element ścieżki podkatalogów na „SpalanieWS”. (Możesz

również zmienić całą ścieżkę prowadzącą do podkatalogu witryny. Może to być

konieczne, gdy nie masz prawa zapisu w lokalizacji zaproponowanej przez kreator.)

Kliknij przycisk OK.

Page 2: Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje internetowe - laboratorium Web Services Do wykonania ćwiczeń 1, 2 i 6, dotyczących

b) Wynikiem działania kreatora powinien być plik z rozszerzeniem .asmx

reprezentujący Web Service i klasa zawierająca jego kod (w naszym przypadku w

języku C# - stąd rozszerzenie .cs pliku z kodem źródłowym klasy).

2. Zaimplementuj serwis obliczający spalanie.

a) Zmień nazwę przestrzeni nazw serwisu na „http://www.cs.put.poznan.pl/wai/”.

[WebService(Namespace = "http://www.cs.put.poznan.pl/wai/")]

b) Zastąp wygenerowaną przez kreator metodę usługową HelloWorld() poniższą metodą

obliczającą całkowity koszt paliwa (w miejsce kropek wpisz odpowiednią formułę):

[WebMethod]

public double koszt(double cena, double odleglosc, double spalanie) {

return ...;

}

Page 3: Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje internetowe - laboratorium Web Services Do wykonania ćwiczeń 1, 2 i 6, dotyczących

c) Zapisz wszystkie zmiany (np. File→Save All).

d) Uruchom Web Service wybierając z menu kontekstowego dla pliku .asmx w panelu

Solution Explorer opcję View in Browser.

e) Obejrzyj zawartość wygenerowanego automatycznie pliku WSDL opisującego Web

Service klikając link „Service Description”.

f) Wróć do strony głównej serwisu i przetestuj działanie metody usługowej koszt()

klikając link „koszt”.

g) Na stronie do testowania metody usługowej wprowadź wartości trzech parametrów i

kliknij przycisk „Invoke”. (Uwaga: Jako separatora części dziesiętnej wartości

parametrów użyj kropki).

Ćwiczenie 2

Celem ćwiczenia jest utworzenie klienta serwisu utworzonego w Ćwiczeniu 1. Aplikacja

kliencka będzie miała postać strony ASP.NET znajdującej się w tym samym projekcie.

1. Dodaj do projektu referencję do komponentu Web Service znajdującego się w bieżącym

projekcie.

a) W panelu Solution Explorer z menu kontekstowego dla węzła projektu (website)

wybierz opcję Add Web Reference.

Page 4: Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje internetowe - laboratorium Web Services Do wykonania ćwiczeń 1, 2 i 6, dotyczących

b) W oknie Add Web Reference kliknij link Web services in this solution.

Page 5: Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje internetowe - laboratorium Web Services Do wykonania ćwiczeń 1, 2 i 6, dotyczących

c) Na liście znalezionych Web Services kliknij link reprezentujący serwis utworzony

w Ćwiczeniu 1.

.

d) Zmień nazwę referencji (Web reference name) na „spalanie” i kliknij przycisk Add Reference.

Poprzez utworzoną w tym kroku referencję dostępna będzie automatycznie generowana

klasa proxy, poprzez którą tworzona strona ASP.NET będzie odwoływać się do

komponentu Web Service.

Page 6: Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje internetowe - laboratorium Web Services Do wykonania ćwiczeń 1, 2 i 6, dotyczących

2. Utwórz formularz do wprowadzania wartości parametrów dla metody serwisu obliczającej

całkowity koszt paliwa.

a) W panelu Solution Explorer z menu kontekstowego dla węzła projektu (website)

wybierz opcję Add New Item. Zaznacz szablon Web Form, a jako język wybierz Visual

C#. Kliknij przycisk Add.

b) Przejdź do edycji utworzonej strony w trybie Design.

c) Techniką drag-and-drop umieść na stronie trzy kontrolki TextBox, jedną kontrolkę

Button i jedną kontrolkę Label.

d) Korzystając z palety właściwości zmień identyfikatory (ID) kontrolek umieszczonych

na stronie na „CenaTextBox”, „OdlegloscTextBox”, „SpalanieTextBox”,

„ObliczButton” i „WynikLabel”. Zmień etykietę (Text) przycisku ObliczButton na

„Oblicz”. Wyczyść treść (Text) dla kontrolki WynikLabel.

e) Rozmieść kontrolki jedną pod drugą wprowadzając między nimi znaki przejścia do

nowej linii i dodaj opisy pól tekstowych do wprowadzania wartości parametrów.

f) Klikając dwukrotnie na kontrolce przycisku przejdź do edycji metody obsługującej

zdarzenie jego naciśnięcia (kliknięcia).

g) Jako ciało metody obsługującej zdarzenie naciśnięcia przycisku wprowadź poniższy

kod:

spalanie.Service service = new spalanie.Service();

WynikLabel.Text = "Obliczony koszt paliwa to " +

service.koszt(Double.Parse(CenaTextBox.Text),

Double.Parse(OdlegloscTextBox.Text),

Double.Parse(SpalanieTextBox.Text)) + ".";

Powyższy kod tworzy obiekt klasy proxy, a następnie za jego pośrednictwem wywołuje

metodę komponentu Web Service, przekazując jej jako wartości parametrów wartości

wprowadzone przez użytkownika do formularza. Wynik działania metody, poprzedzony

tekstowym opisem, jest umieszczany w kontrolce typu Label na stronie.

h) Zapisz wszystkie zmiany (np. File→Save All).

i) Uruchom stronę wybierając z menu kontekstowego dla pliku strony w panelu Solution

Explorer opcję View in Browser.

j) Przetestuj działanie aplikacji podając różne wartości parametrów. (Uwaga: Jako

separatora części dziesiętnej wartości parametrów użyj separatora wybranego w

ustawieniach regionalnych systemu Windows. W Polsce domyślnym jest przecinek.)

Page 7: Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje internetowe - laboratorium Web Services Do wykonania ćwiczeń 1, 2 i 6, dotyczących

Ćwiczenie 3

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, wygenerowany zostanie klient usługi testujący jej poprawność.

1. Uruchom narzędzie JDeveloper

2. Utwórz nową aplikację bez szablonu (No Template).

3. Kliknij prawym przyciskiem myszy na ikonie aplikacji i z menu kontekstowego

wybierz New Project. Rozwiń gałąź kategorii General i zaznacz kategorię Projects.

W prawym oknie zaznacz element Empty Project. Kliknij przycisk OK.

Page 8: Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje internetowe - laboratorium Web Services Do wykonania ćwiczeń 1, 2 i 6, dotyczących

4. Wpisz nazwę projektu Web Services 2 i kliknij przycisk OK.

5. Kliknij prawym przyciskiem myszy na ikonie projektu Web Services 2. Z menu

kontekstowego wybierz opcję New… W oknie kategorii zaznacz gałąź General.

Z listy dostępnych elementów w oknie po prawej stronie wybierz Java Class. Kliknij

przycisk OK.

Page 9: Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje internetowe - laboratorium Web Services Do wykonania ćwiczeń 1, 2 i 6, dotyczących

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, nazwę pakietu:

webservices, nazwę nadklasy: java.lang.Exception. Kliknij przycisk OK.

7. Plik WrongArgumentsException.java został automatycznie załadowany do

edytora. Uzupełnij plik poniższym kodem.

package webservices;

public class WrongArgumentsException extends Exception {

public WrongArgumentsException(String message) {

super(message);

}

}

Page 10: Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje internetowe - laboratorium Web Services Do wykonania ćwiczeń 1, 2 i 6, dotyczących

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 webservices;

/**

* 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);

}

}

9. Kliknij prawym przyciskiem myszy na ikonie projektu Web Services 2 i z menu

kontekstowego wybierz New…, zaznacz kategorię General i wybierz element Java

Class. Kliknij przycisk OK. Wprowadź nazwę klasy: EuclideanAlgorithm oraz

nazwę pakietu: webservices. Kliknij przycisk OK.

Page 11: Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje internetowe - laboratorium Web Services Do wykonania ćwiczeń 1, 2 i 6, dotyczących

10. Do znajdowania największego wspólnego podzielnika dwóch liczb wykorzystamy

algorytm Euklidesa (http://en.wikipedia.org/wiki/Euclids_algorithm). Wprowadź do

pliku poniższy kod, nie zapomnij o udokumentowaniu poszczególnych elementów.

package webservices;

/**

* 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("Parameters must be integers");

}

if ((i < 0) || (j < 0))

throw new WrongArgumentsException("Parameters must be positive");

while (i != j)

if (i > j)

i -= j;

else

j -= i;

return i;

}

}

Page 12: Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje internetowe - laboratorium Web Services Do wykonania ćwiczeń 1, 2 i 6, dotyczących

11. W nawigatorze obiektów rozwiń gałąź reprezentującą projekt Web Services 2, a

następnie rozwiń gałąź Application Sources. Zaznacz węzeł reprezentujący pakiet

webservices. Z menu głównego wybierz Run→Javadoc webservices. Po

zakończeniu generowania dokumentacji w oknie dziennika (u dołu ekranu) kliknij na

odnośnik View Documentation. Ekran komputera powinien wyglądać teraz tak.

12. W kolejnym kroku udostępnimy stworzoną klasę EuclideanAlgorithm (wraz z

pomocniczą klasą WrongArgumentsException) w postaci usługi sieciowej.

Kliknij prawym przyciskiem myszy na ikonie pliku EuclideanAlgorithm.java

i z menu kontekstowego wybierz opcję Create J2EE Web Service. Wybierz wersję

J2EE 1.4 i kliknij przycisk OK.

Page 13: Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje internetowe - laboratorium Web Services Do wykonania ćwiczeń 1, 2 i 6, dotyczących

13. Podaj nazwę usługi: EuclideanWebService. Upewnij się, że jest włączona opcja

Autogenerate Service Endpoint Interface. Kliknij przycisk Zakończ (pozostałe

parametry usługi sieciowej pozostają domyślne).

14. Zauważ, że w nawigatorze obiektów zmieniła się ikona reprezentująca plik

EuclideanAlgorithm.java, a zamiast tego pojawiła się ikona reprezentująca

całą usługę. W celu obejrzenia całej zawartości usługi zaznacz tę ikonę i z menu

głównego wybierz View→Structure.

Page 14: Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje internetowe - laboratorium Web Services Do wykonania ćwiczeń 1, 2 i 6, dotyczących

15. Kolejny krok to uruchomienie serwera aplikacji, na którym zostanie zainstalowana

usługa sieciowa. Wykorzystamy do tego celu serwer OC4J dostarczany razem z

narzędziem JDeveloper. Otwórz okno MS-DOS i przejdź do katalogu

%JDEV_HOME%\j2ee\home. Następnie uruchom serwer aplikacji OC4J przez

wydanie poniższego polecenia. Uwaga: przy pierwszym uruchomieniu serwera

aplikacji nastąpi automatyczna instalacja wielu komponentów, dodatkowo instalator

może zapytać o hasło dla administratora. Proszę wówczas podać hasło welcome i je

potwierdzić.

C:\> java –jar oc4j.jar

Page 15: Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje internetowe - laboratorium Web Services Do wykonania ćwiczeń 1, 2 i 6, dotyczących

16. Sprawdź, czy serwer aplikacji faktycznie uruchomił się poprawnie. W tym celu

otwórz przeglądarkę i przejdź do adresu http://localhost:8888

17. Wróć do narzędzia JDeveloper. W nawigatorze obiektów (okno z lewej strony ekranu)

przejdź na zakładkę Connections (alternatywnie, z menu głównego wybierz

View→Connection Navigator). Kliknij prawym przyciskiem myszy na ikonie

Application Server i z menu kontekstowego wybierz opcję New Application Server

Connection. W pierwszym oknie asystenta kliknij przycisk Dalej >. W drugim oknie

asystenta wpisz nazwę połączenia: LocalAppServerConnection oraz typ połączenia:

Autonomiczny OC4J 10g 10.1.3. Kliknij przycisk Dalej >.

Page 16: Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje internetowe - laboratorium Web Services Do wykonania ćwiczeń 1, 2 i 6, dotyczących

18. W kolejnym kroku wpisz hasło administratora serwera aplikacji OC4J. Kliknij

przycisk Dalej >.

19. W trzecim kroku asystenta pozostaw wszystkie wartości domyślne (lokalny serwer,

brak ścieżki URL, domyślny port RMI. Kliknij przycisk Dalej >. W ostatnim kroku

kliknij przycisk Test Connection. Kliknij przycisk Zakończ.

Page 17: Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje internetowe - laboratorium Web Services Do wykonania ćwiczeń 1, 2 i 6, dotyczących

20. Wróć do okna nawigatora aplikacji (główne menu View→Application Navigator).

Rozwiń gałąź Resources i kliknij dwukrotnie na pliku WebServices.deploy

stanowiącym deskryptor instalacji usługi sieciowej na serwerze aplikacji. Przejdź do

gałęzi File Groups→WEB-INF/classes→Filters. ę, że zaznaczone są 3

pliki klas jak na poniższym obrazku. Kliknij przycisk OK.

21. Kliknij prawym przyciskiem myszy na pliku WebServices.deploy i z menu

kontekstowego wybierz Deploy to→LocalAppServerConnection. W oknie które się

pojawi kliknij przycisk OK. Poczekaj na zakończenie procesu instalacji (możesz

obserwować postęp instalacji w oknie dziennika u dołu ekranu).

Page 18: Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje internetowe - laboratorium Web Services Do wykonania ćwiczeń 1, 2 i 6, dotyczących

22. Wróć do okna przeglądarki i przejdź do adresu http://localhost:8888/em. Zaloguj się

do serwisu jako administrator serwera aplikacji (użytkownik oc4jadmin). Z głównego

ekranu aplikacji wybierz odnośnik Web Services.

23. Kliknij przycisk Test Service dla zainstalowanej właśnie usługi sieciowej. Na

kolejnym ekranie kliknij przycisk Test Web Service. W przeglądarce zostanie otwarty

domyślnie wygenerowany punkt dostępowy do usługi sieciowej.

Page 19: Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje internetowe - laboratorium Web Services Do wykonania ćwiczeń 1, 2 i 6, dotyczących
Page 20: Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje internetowe - laboratorium Web Services Do wykonania ćwiczeń 1, 2 i 6, dotyczących

24. Odnośnik Service Description prowadzi do pliku WSDL opisującego naszą usługę

sieciową (Podejrzyj jego zawartość). Istnieje także możliwość pobrania pieńka (ang.

stub) do usługi sieciowej przygotowanego w języku JavaScript. Dodatkowo, punkt

dostępowy umożliwia przetestowanie usługi sieciowej. Wprowadź do pól formularza

wartości testowe: 100 i 725.

25. Przed wywołaniem usługi sieciowej przełącz się w tryb podglądu postaci koperty

SOAP która zostanie wysłana do usługi sieciowej (przycisk radiowy Źródło XML).

Następnie kliknij przycisk Invoke i obejrzyj zwróconą odpowiedź.

26. Powróć do okna umożliwiającego podawanie parametrów wywołania usługi

sieciowej. Wpisz niepoprawny parametr, np. -5. Obejrzyj uzyskany wynik.

Ćwiczenie 4

Celem ćwiczenia jest przygotowanie prostej aplikacji internetowej wykorzystującej usługę

sieciową (ang. web service). utworzoną w poprzednim ćwiczeniu. Aplikacja składa się z

formularza HTML i serwletu.

1. Z menu głównego narzędzia JDeveloper wybierz File→New→Application. Wybierz

kategorię General i typ Application. Kliknij przycisk OK.

2. Podaj nazwę aplikacji WSClient. Kliknij przycisk OK.

3. Automatycznie pojawi się okno dialogowe z pytaniem o nazwę i lokalizację projektu.

Wpisz nazwę projektu EuclideanClient i kliknij przycisk OK.

4. Kliknij prawym przyciskiem myszy na ikonie projektu EuclideanClient. Z menu

kontekstowego wybierz opcję New… W oknie kategorii rozwiń gałąź Business Tier i

zaznacz kategorię Web Services. Z listy dostępnych elementów w oknie po prawej

stronie wybierz Web Service Proxy. Kliknij przycisk OK.

Page 21: Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje internetowe - laboratorium Web Services Do wykonania ćwiczeń 1, 2 i 6, dotyczących

5. Automatycznie otworzył się asystent tworzenia obiektów proxy. Na pierwszym

ekranie kliknij przycisk Dalej >. Wpisz w pierwszym polu adres deskryptora usługi

sieciowej utworzonej w poprzednim ćwiczeniu, pracującej na serwerze OC4J

(http://localhost:8888/WebServicesApp-Web%20Services%202-context-

root/EuclideanWebServiceSoapHttpPort?WSDL) i naciśnij klawisz Tab. Kliknij

przycisk Dalej >.

6. W kolejnym kroku asystenta pozostaw proponowany docelowy adres URL i kliknij

przycisk Dalej >.

Page 22: Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje internetowe - laboratorium Web Services Do wykonania ćwiczeń 1, 2 i 6, dotyczących

7. W 3 i 4 kroku asystenta kliknij przycisk Dalej >.

8. W kroku piątym zmień nazwę pakietu dla generowanych obiektów proxy na

webservices. Kliknij przycisk Zakończ.

9. W edytorze została otwarta automatycznie wygenerowana klasa proxy. Przejdź do

metody main() i znajdź komentarz „Add your own code here”. Wprowadź

zamiast niego poniższy kod testujący, czy usługa sieciowa działa poprawnie:.

System.out.println(myPort.greatestCommonDivisor("45","20"));

10. Uruchom aplikację (np. przez naciśnięcie klawisza F11) i zaobserwuj wynik działania.

11. W kolejnym kroku zaprojektujemy wygodniejszy interfejs dla usługi sieciowej. W

tym celu zbudujemy formularz HTML umożliwiający podawanie tekstu do

tłumaczenia. Kliknij prawym przyciskiem myszy na projekcie EuclideanClient i

Page 23: Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje internetowe - laboratorium Web Services Do wykonania ćwiczeń 1, 2 i 6, dotyczących

wybierz z menu kontekstowego opcję New… W oknie kategorii rozwiń gałąź przy

kategorii Web Tier i zaznacz kategorię HTML. W oknie z prawej strony zaznacz

element HTML Page. Kliknij przycisk OK.

12. Na pierwszym oknie asystenta kliknij przycisk Dalej >. Wprowadź nazwę pliku:

form.html. Kliknij przycisk Dalej >.

13. W ostatnim kroku asystenta wprowadź tytuł strony: Euclidean Algorithm i kliknij

przycisk Zakończ.

14. Strona form.html zostanie otwarta w edytorze wizualnym. W pierwszej kolejności

zastosujemy gotowy szablon CSS. W tym celu w oknie Components (w prawym

górnym rogu obszaru roboczego) wybierz z listy rozwijanej pozycję CSS, a następnie

przeciągnij i upuść szablon o nazwie JDeveloper na puste białe pole edycji.

Page 24: Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje internetowe - laboratorium Web Services Do wykonania ćwiczeń 1, 2 i 6, dotyczących
Page 25: Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje internetowe - laboratorium Web Services Do wykonania ćwiczeń 1, 2 i 6, dotyczących

15. W oknie Components wybierz z listy rozwijanej element HTML Forms. Z listy

komponentów przeciągnij i upuść element Form. Automatycznie otworzy się okno z

właściwościami formularza. Jako akcję wpisz euclidean, metoda wywołania

serwletu to GET, sposób kodowania parametrów to text/plain. Kliknij przycisk

OK.

16. Kliknij myszką wewnątrz elementu formularza i wpisz tekst: „Please enter two

integers: ”. Pod tekstem upuść przeciągnięte z listy komponentów 2 elementy

TextField. Dla pierwszego podaj nazwę num1, a dla drugiego – num2.

17. Poniżej obu pól tekstowych, ale w obrębie formularza, umieść komponent Submit Button. W automatycznie otwartym oknie właściwości wpisz jako atrybut Value tekst

„Calculate Greatest Common Divisor” i kliknij przycisk OK.

18. Ostatni krok to przygotowanie serwletu który przyjmie parametry wysłane z

formularza, utworzy obiekt proxy do usługi, dokona wywołania usługi i wyświetli

wynik. Kliknij prawym przyciskiem myszy na ikonie projektu EuclideanClient i z

menu kontekstowego wybierz New… Rozwiń gałąź kategorii Web Tier i zaznacz

kategorię Servlets. W prawej części okna wybierz element HTTP Servlet. Kliknij

przycisk OK.

Page 26: Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje internetowe - laboratorium Web Services Do wykonania ćwiczeń 1, 2 i 6, dotyczących

19. W pierwszym oknie asystenta tworzenia serwletów kliknij przycisk Dalej >.

W drugim oknie wybierz wersję Servlet 2.4\JSP 2.0 (J2EE 1.4). Kliknij przycisk

Dalej >. W kolejnym kroku wpisz nazwę serwletu Euclidean, nazwę pakietu

webservices, upewnij się że zostanie wygenerowana metoda doGet(). Kliknij

przycisk Dalej >

20. Upewnij się, że do deskryptora instalacji web.xml zostanie dopisane odwzorowanie

serwletu. Kliknij przycisk Zakończ.

Page 27: Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje internetowe - laboratorium Web Services Do wykonania ćwiczeń 1, 2 i 6, dotyczących

21. Kod serwletu został załadowany do edytora. Dodaj kod tworzący instancję klasy

proxy, odczytujący parametry przesłane z formularza, wywołujący usługę obliczenia

największego wspólnego dzielnika i wyświetlający wynik. Ostateczna postać kodu

metody doGet() serwletu powinna być następująca:

public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

response.setContentType(CONTENT_TYPE);

EuclideanWebServiceSoapHttpPortClient myPort;

String num1 = request.getParameter("num1");

String num2 = request.getParameter("num2");

PrintWriter out = response.getWriter();

out.println("<html>");

out.println("<head><title>Euclidean</title></head>");

out.println("<body>");

try {

myPort = new EuclideanWebServiceSoapHttpPortClient();

int res = myPort.greatestCommonDivisor(num1, num2);

out.println("The greatest common divisor of the two integers is:<br>");

out.println(res);

}

catch (Exception e) {

out.println(e.getMessage());

}

out.println("</body></html>");

out.close();

}

Page 28: Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje internetowe - laboratorium Web Services Do wykonania ćwiczeń 1, 2 i 6, dotyczących

22. Przejdź do pliku form.html. Uruchom aplikację naciskając klawisz F11. Przetestuj

działanie aplikacji dla różnych danych.

23. Zatrzymaj serwer OC4J kombinacją klawiszy Ctrl-C w oknie jego konsoli.

Ćwiczenie 5

Celem ćwiczenia jest przygotowanie usługi sieciowej w oparciu o klasę Java oznaczoną

adnotacjami.

1. Uruchom środowisko Netbeans 6.1.

2. Utwórz nowy projekt typu Web Application.

3. W kreatorze nowej aplikacji zmień nazwę aplikacji na EvenOddApp, jako serwer

wybierz GlassFish, a dla pozostałych opcji pozostaw wartości domyślne.

Page 29: Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje internetowe - laboratorium Web Services Do wykonania ćwiczeń 1, 2 i 6, dotyczących

4. W utworzonym projekcie utwórz usługę sieciową wybierając z menu kontekstowego

dla węzła projektu opcję New→Web Service.

5. Jako nazwę komponentu web service podaj EvenOddWebService a jako nazwę pakietu

evenodd. Pozostaw wybraną opcję Create Web Service from Scratch (alternatywą jest

publikowanie istniejącego sesyjnego komponentu EJB jako usługi sieciowej).

6. Edytując wygenerowaną klasę Java w trybie Design, korzystając z przycisku Add

Operation dodaj dwie metody isEven i isOdd przyjmujące parametr o nazwie val typu

int i zwracające wartość boolean.

Page 30: Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje internetowe - laboratorium Web Services Do wykonania ćwiczeń 1, 2 i 6, dotyczących
Page 31: Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje internetowe - laboratorium Web Services Do wykonania ćwiczeń 1, 2 i 6, dotyczących

7. Przełącz się na tryb edycji źródła klasy. Zaobserwuj adnotacje związane

z wykorzystaniem klasy jako usługi sieciowej dodane przez kreator.

8. Zaimplementuj samodzielnie metody isEven() i isOdd(), tak aby pierwsza z nich

zwracała prawdę dla liczb parzystych, a druga dla nieparzystych.

9. Uruchom aplikację np. klawiszem F6.

10. Przejdź do strony umożliwiającej przetestowanie utworzonej usługi wybierając dla

niej z menu kontekstowego w drzewie projektów opcję Test Web Service.

Page 32: Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje internetowe - laboratorium Web Services Do wykonania ćwiczeń 1, 2 i 6, dotyczących

11. Przetestuj obie metody usługowe dla różnych wartości parametrów. Zapamiętaj adres

pliku WSDL opisującego usługę (będzie wykorzystany w kolejnym ćwiczeniu).

12. Pozostaw działającą aplikację i środowisko Netbeans.

Ćwiczenie 6

Celem ćwiczenia jest przygotowanie prostej konsolowej aplikacji .NET w języku C# będącej

klientem usługi sieciowej zaimplementowanej w poprzednim ćwiczeniu w języku Java.

1. Uruchom środowisko Microsoft Visual Studio 2005.

2. Utwórz projekt typu Console Application w języku Visual C#. Nazwij go WSClient.

Page 33: Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje internetowe - laboratorium Web Services Do wykonania ćwiczeń 1, 2 i 6, dotyczących

3. Uruchom kreator dodawania do projektu referencji do komponentu Web Service.

4. Wprowadź do pola URL adres pliku WSDL opisującego usługę sieciową z

poprzedniego ćwiczenia pracującą na serwerze GlassFish uruchomionym z poziomu

środowiska Netbeans. Następnie kliknij Go.

Page 34: Wielowarstwowe aplikacje internetowe - laboratorium · 2008-04-01 · Wielowarstwowe aplikacje internetowe - laboratorium Web Services Do wykonania ćwiczeń 1, 2 i 6, dotyczących

5. Jako nazwę referencji pozostaw localhost i kliknij Add Reference.

6. Przejdź do edycji pliku Program.cs i dodaj w metodzie Main poniższy kod

tworzący instancję wygenerowanej klasy Proxy i wywołujący na jej rzecz metody

usługowe:

localhost.EvenOddWebServiceService proxy

= new localhost.EvenOddWebServiceService();

Console.WriteLine("Is 11 even? " + proxy.isEven(11));

Console.WriteLine("Is 11 odd? " + proxy.isOdd(11));

Console.WriteLine("Press Enter...");

Console.ReadLine();

7. Uruchom aplikację.