Web Services w Eclipse Galileo

java/j2ee Add comments

Wydawać by się mogło, że tworzenie Web Service’ów jest rzeczą trudną. Trzeba znać strukturę pliku WSDL, specyfikacje protokołu SOAP itp. Nic bardziej mylnego!!! Co prawda mój pierwszy Web Service i klient do niego powstawał troszkę ponad godzinę, ale miałem do dyspozycji tylko tutorial w j. ang. do starej wersji Eclipsa. Za to mój drugi Web Service razem z klientem powstawał już w przeciągu kilku minut. Chcesz się przekonać, że to możliwe? Zapraszam do lektury poniższego artykułu.

Przygotowanie gruntu

To co nam będzie potrzebne to oczywiście Eclipse z wbudowaną lub doinstalowaną wtyczką WTP 3.1.1 (Web Tools Platform) oraz kontener serwletów Apache Tomcat 5.5 lub nowszy. Na chwile obecną dostępna jest dystrybucja Eclipse IDE for Java EE Developers, która ma wbudowaną wtyczkę WTP 3.1.1. Dystrybucja do ściągnięcia oczywiście ze strony www.eclipse.org/downloads.

Ok, zakładam, że masz już zainstalowanego Eclipsa i Tomcat’a. Ostatnią rzeczą przed właściwym tworzeniem Web Service’u będzie konfiguracja Tomcata pod Eclipsem. W tym celu przejdź do Windows -> Preferences -> Installed Runtimes i dodaj nowy serwer uruchomieniowy:  Apache Tomcat w wersji zgodnej z zainstalowaną.

Rys 1. Przygotowanie Eclipsa

Teraz możemy już tworzyć nasz przykładowy Web Service, którego zadaniem będzie tłumaczenie tekstu pisanego na alfabet Morsa i vice versa.

Tworzenie Web Service’u

Stwórzmy nowy projekt: File -> New -> Project -> Dynamic Web Project i nazwijmy go “MorseCodeService”.

Rys 2. Tworzenie web serwisu - krok 1

Jeśli nie mamy żadnej głębszej potrzeby to możemy zostawić wszystkie pozostałe parametry z domyślnymi wartościami. U mnie wygląda to następująco:

Rys 3. Tworzenie web serwisu - krok 2

Rys 3. Tworzenie web serwisu - krok 3

Stwórzmy nową klasę java o nazwie MorseCode w pakiecie pl.smike.services, która będzie miała dwie metody txt2Morse i morse2Txt. Na postawie tej klasy stworzymy nasz Web Service.

MorseCode.java

Kliknij prawym przyciskiem myszy na plik MorseCode.java i wybierz New -> Other -> Web Service.

Rys 5. Tworzenie web serwisu - krok 4

Upewnij się, że są zaznaczone obie metody klasy MorseCode.

Rys 6. Tworzenie web serwisu - krok 5

Kliknij Next, w tym momencie kreator utworzy wszystkie potrzebne pliki i zależności do odpalenia Web Service’u. Na ekranie powinien pojawić sie przycisk Start Service, który należy wybrać.

Rys 7. Tworzenie web serwisu - krok 6

Jeśli wszystko poszło prawidłowo i serwer odpalił się, dostępny będzie przycisk Next. Po jego użyciu nasz nowy serwis zostanie zdeployowany. Możemy zakończyć kreator -Finish.

W tym momencie nasz serwis powinien już być uruchomiony i prawidłowo działać. Dostępne, zdeployowane lokalnie serwisy w projekcie możemy sprawdzić pod adresem: http://localhost:8080/MorseCodeService/services

Tworzenie klienta Web Service’u

Naszego klienta stworzymy na podstawie pliku WSDL opisującego Web Service. Jest to o tyle dobre podejście, iż na ogół tworząc klienta Web Service’u posiadamy tylko plik WSDL.

Stwórzmy zatem nowy projekt: File -> New -> Project -> Dynamic Web Project i nazwijmy go “MorseCodeClient”. Wszystkie pozostałe parametry ustawmy takie jak w przypadku “MorseCodeService”.

Kliknij prawym przyciskiem myszy na nazwie projektu i wybierz New -> Other -> Web Service Client.

Rys 8. Tworzenie klienta web serwisu - krok 1

W polu Service Definition musimy podać plik wsdl. Kliknij Browse. W oknie, które nam sie pojawi moglibyśmy podać URL do tego pliku, ale możemy zrobić prościej i wybierzemy go z istniejącego projektu MorseCodeService. Kliknij zatem jeszcze raz na Browse i wybierz plik MorseCode.wsdl.

Rys 9. Tworzenie klienta web serwisu - krok 2

Ostatni krok przygotowujący klienta to umiejscowienie plików źródłowych. Zostawmy wartości domyśle i klikamy Finish. W tym momencie zostaną utworzone wszystkie potrzebne pliki i zależności do komunikacji z Web Service’em. Najważniejsza klasą, która nas będzie interesować jest MorseCodeProxy. To przy jej pomocy zdobędziemy referencje do klasy MorseCode lub wywołamy pośrednio metody z tej klasy.

Stwórzmy nową stronę index.jsp w katalogu WebContent (New -> Other -> JSP). Strona ta będzie interfejsem użytkownika naszego klienta.

index.jsp

Mając już interfejs użytkownika ostatnią rzeczą będzie stworzenie servletu, który będzie wywoływał Web Service. Wybierz New -> Other -> Servlet i nazwij go TranslateServlet i umieść w pakiecie pl.smike.servlets. Kreator zadba o odpowiednie wpisy w web.xml’u tak więc nie musisz sie o to martwić.

TranslateServlet.java

Jeśli wszystko poszło dobrze możemy odpalać i testować naszego klienta. Kliknij prawym przyciskiem myszy na nazwe projektu i wybierz: Run As -> Run on Server. Po zdeployowaniu naszej aplikacji na serwere wpisz w przeglądarce adres http://localhost:8080/MorseCodeClient/index.jsp . I to już wszystko.

Podsumowanie

Jak widać tworzenie Web Service’ów w Eclipsie jest rzeczą prostą i sprowadza się do wyklinania prawie wszystkiego. Tworząc w pełni funkcjonalny Web Service nie musimy się zagłebiać w szczegóły jego jego działania na serwerze, ani sposobu komunikacji z klientem.

4 Responses to “Web Services w Eclipse Galileo”

  1. zabawki edukacyjne Says:

    Bardzo interesujący wpis. Ze 100% pewnością wpadnę jeszcze po więcej lektury.

  2. tom Says:

    Witam, mam to samo oprogramowanie, co ty (wersje), i za cholerę nie mogę przebrnąć przez utworzenie WebServis’u. Otrzymuję błąd: IWAB0506E Error when copying Axis jar files to web project. Mogę sobie podglądnąć błąd, brakuje mu pliku saaj.jar. Ręce mi opadają… Ktoś wie, jak pomóc?

  3. Iskra Maciej Says:

    Bardzo fajny tutorial, niestety u mnie eclipse-europa nie dodala do web.xml servletu “TranslateServlet”. Jakby ktos mial taki problem to w web.xml:
    ———————————————————-code

    TranslateServlet

    pl.smike.servlets.TranslateServlet

    TranslateServlet
    /TranslateServlet

    —————————————————/code

  4. Iskra Maciej Says:

    <servlet>
    <servlet-name>TranslateServlet</servlet-name>
    <servlet-class>
    pl.smike.servlets.TranslateServlet
    </servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>TranslateServlet</servlet-name>
    <url-pattern>/TranslateServlet</url-pattern>
    </servlet-mapping>

Leave a Reply

Copyright © 2009 by Michał Stochliński. WP Theme & Icons by N.Design Studio
Kanał RSS Komentarze RSS Zaloguj się