Webservices 1

Korzystanie z Usług Sieciowych przy pomocy protokołu SOAP

Usługa

Przykładową usługą w tym ćwiczeniu będzie serwis oferowany przez Koścół Św. Gregoriosa http://www.stgregorioschurchdc.org/. Usługa ta jest opisana na stronie http://www.xmethods.com/ve2/ViewListing.po?serviceid=66685 . Podaje ona date Świąt Wielkanocnych w zadanym roku.

Wykonac te usluge mozna wykorzystujac pakiet SoupUI (mozna zobaczyc tam komunikaty SOAP).

Ćwiczenie1: Klient w Javie

Do korzystania z usług sieciowych (Web Services) w Javie wykorzystamy bibliotekę AXIS rozwijaną przez projekt Apache. Jest ona zainstalowana w katalogu
/afs/wszib.edu.pl/usr/t/s/tszepie/pub/prir/axis-1_4/
. Aby z niej móc korzystać, należy dopisać do CLASSPATH wszystkie pliki JAR znajdujące się w dystrybucji AXIS. Robimy to skryptem axissetup.sh.
. axissetup.sh

Do tworzenia klienta skorzystamy z opisu usługi, dostępnej w pliku WSDL dostępnym pod adresem: http://www.stgregorioschurchdc.org/wsdl/Calendar.wsdl Wszystkie potrzebne pliki wygenerujemy narzędziem WSDL2Java dostępnym w AXIS:

java org.apache.axis.wsdl.WSDL2Java http://www.stgregorioschurchdc.org/wsdl/Calendar.wsdl
Wygeneruje nam to pliki:
Klienta musimy napisać sami.
Na początku deklarujemy korzystanie z utworzonych plików:
  import org.stgregorioschurchdc.www.Calendar.*;
Następnie w funkcji main()
try {
//tworzymy referencje do usługi
Calendar calendar = new CalendarLocator();

//pobieramy port SOAPowy
EasterDateSoapPort port = calendar.getEasterDateSoapPort();

//wywolujemy zdalnie funkcję usługi
System.out.println(port.easter_date(Short.parseShort(args[0])));

} catch (Exception e) {
System.err.println("App exception: " +
e.getMessage());
e.printStackTrace();
}

Gotowy Client.java

Kompilujemy utworzony plik

javac Client.java
Uruchamiamy klienta pytając o Wielkanoc w roku 2008:
java Client 2008
Dostajemy odpowiedź:
2008/03/23

Ćwiczenie 2: Klient w Perlu

Perl jest językiem skryptowym, używanym do przetwarzania plików tekstowych, również w skryptach CGI. Istnieje wygodny moduł o nazwie SOAP::Lite,  służacy do obsługi Usług Sieciowych (Web Services). Progam client.pl w perlu korzystający z tej samej usługi podającej datę wielkanocy będzie miał postać:
 use SOAP::Lite;

print SOAP::Lite
-> service('http://www.stgregorioschurchdc.org/wsdl/Calendar.wsdl')
-> easter_date(@ARGV[0]);
print "\n"
Program ten uruchamiamy perlem (w jednej lini!), podając ścieżkę do biblioteki SOAP::Lite:
perl -I /afs/wszib.edu.pl/usr/t/s/tszepie/pub/prir/SOAP-Lite-0.69/lib/ 
client.pl 2008 

Ćwiczenie 3: dodatkowe

Proszę napisać klienta do innej usługi sieciowej, której opis znaleźć można np. na stronie http://www.xmethods.com



Maciej Malawski, Marcin Radecki, Tomasz Szepieniec