Celem tego podstawowego ćwiczenia jest zrozumienie działania ustług internetowych (Web Service) i implementacja prostych aplikacji, które są w stanie użyć dostępnie dostępnych Web Serviców. Poszczególne punkty tłumaczą jak przetestować przykładowy serwis oraz jak stworzyć aplikacje umożliwiające wywołanie udostępnionych usług w kilkku językach programowania.
Poniższe ćwiczenie wykorzystuje JDK 1.6.
Celem ćwiczenia jest wywołanie usługi udostępnionej przez Koścół Św. Gregoriosa. Podaje ona date Świąt Wielkanocnych w zadanym roku.
Wykonać tą usługę można wykorzystujac pakiet SoupUI (używając tego pakietu można zobaczyć tam komunikaty SOAP). Prosze ściagnąć plik konfigurujący aplikację SoapUi na maszynach dostępnych na laboratoriach soapuisetup.sh. soapuisetup.sh
Biblioteka AXIS zainstalowana jest w katalogu:
/afs/wszib/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: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();
}
javac Client.java
Uruchamiamy klienta pytając o Wielkanoc w roku 2012:java Client 2012
Dostajemy odpowiedź:2012/04/08
wsimport -p client -keep http://www.holidaywebservice.com/Holidays/GBSCT/Dates/GBSCTHolidayDates.asmx?WSDL
A następnie stworzyć klase klienta:
package client;
public class Client {
public static void main(String[] args) {
GBSCTHolidayDates service = new GBSCTHolidayDates();
GBSCTHolidayDatesSoap proxy = service.getGBSCTHolidayDatesSoap();
System.out.println(proxy.getHalloween(2011));
}
}
Uwaga: klasa klienta musi znajdować sie w katalogu client.
Następnie kompilujęmy stworzoną aplikację:javac client/*.java
A następnie uruchamiamy aplikację:java client.Client
Jako rezultat uzyskujemy datę hallowin w roku 20112011-10-31T00:00:00
use SOAP::Lite;
print SOAP::Lite->service('http://www.stgregorioschurchdc.org/wsdl/Calendar.wsdl')
-> easter_date(@ARGV[0]);
print "\n"
perl -I /afs/wszib/usr/t/s/tszepie/pub/prir/SOAP-Lite-0.69/lib/ client.pl 2008