AXIS2 - tworzenie usługi sieciowej i klienta Axis Data Binding dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak
Ustawienie zmiennych środowiskowych Przed rozpoczęciem pracy z pakietem AXIS należy ustalić następujące zmienne środowiskowe: export AXIS2_HOME=katalog domowy AXIS2 export CLASSPATH=$AXIS2_HOME/lib/**
Opis klasy z dokumenty WSDL
Kalkulator kredytowy Usługa sieciowa pozwala na wyznaczenie wysokości rat dla kredytu. Kredyt opisany jest przez kwotę, liczbę miesięcy i oprocentowanie (zakładamy, że raty są spłacane co miesiąc). Usługa zwraca tablicę Rat składających się z kwoty kapitału i kwoty odsetek. Klasy składające się na usługę to: kredyty.service.kalkulatorkredytowy public Rata [] getraty(kredyt k) kredyty.service.kredyt float kwota; int okres; float oprocentowanie; kredyty.service.rata kapital; odsetki; Aby pola składowe klasy były widoczne dla AXIS2 należy zdefiniować metody get i set dla tych pól składowych.
Kalkulator kredytowy struktura plików Wszystkie pliki źródłowe umieszczone w katalogu src i podkatalogach odpowiadających pakietowi kredyty.service, a więc: src/kredyty/service/rata.java src/kredyty/service/kredyt.java src/kredyty/service/kalkulatorkredytowy.java W katalogu src znajduje się również katalog META-INF, a w nim plik services.xml o następującej zawartości: src/meta-inf/services.xml: <service name="kalkulatorkredytowy" scope="application"> <description> Kalkulator kredytowy </description> <messagereceivers> <messagereceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.rpcinonlymessagereceiver"/> <messagereceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.rpcmessagereceiver"/> </messagereceivers> <parameter name="serviceclass">kredyty.service.kalkulatorkredytowy</parameter> </service>
Kalkulator kredytowy kompilacja i uruchomienie usługi Kompilacja klas: javac -d build/classes/ src/kredyty/service/*.java -d dest - katalog, w którym zostaną umieszczone pliki *.class; w katalog build/classes/ powinien zawierać pliki Rata.class, Kredyt.class i KalkulatorKredytowy.class; Do katalogu build/classes/ przekopiować katalog META-INF z katalogu src. Utworzenie archiwum.aar z zawartości katalogu build/classes (pliki.class oraz katalog META- INF): jar cvf build/kalkulatorkredytowy.aar -C build/classes. Utworzony w ten sposób plik KalkulatorKredytowy.aar powinien zostać umieszczony w katalogu $AXIS2_HOME/repository/services
generowanie klas klienta Aby utworzyć klienta usługi sieciowej należy wygenerować klasy odpowiadające elementom występującym w usłudze sieciowej. Klasy te są generowane za pomocą aplikacji wsdl2java na podstawie pliku WSDL opisującego usługę sieciową. $AXIS2_HOME/bin/wsdl2java.sh -uri KalkulatorKredytowy.wsdl -d adb -s -p kredyty.client Uruchomienie skryptu spowoduje utworzenie pliku KalkulatorKredytowyStub.java w katalogu src/kredyty/klient. Utworzona zostanie klasa KalkulatorKredytowyStub, wewnątrz której znajdują się następujące klasy wewnętrzne: Kredyt, Rata, GetRatyResponse, GetRaty.
klasy klienta KalkulatorKredytowyStub to klasa reprezentująca usługę sieciową. KalkulatorKredytowyStub.Kredyt i KalkulatorKredytowyStub.Rata to klasy odpowiadające klasom kredyty.service.kredyt i kredyty.service.rata. Klasy te udostępniają metody get i set pozwalające na pobranie i ustawienie pól składowych klasy. GetRaty to klasa odwzorowująca metodę getraty. Obiekt ten jest wykorzystywany do zdefiniowania parametrów przekazywanych do metody getraty. GetRatyResponse klasa, której obiekt jest zwracany przez metodę getraty.
implementacja klienta try{ String URL = "http://localhost:4321/axis2/services/kalkulatorkredytowy"; KalkulatorKredytowyStub stub = new KalkulatorKredytowyStub(URL); } catch (Exception ex) { } ex.printstacktrace();
implementacja klienta try{ String URL = "http://localhost:4321/axis2/services/kalkulatorkredytowy"; KalkulatorKredytowyStub stub = new KalkulatorKredytowyStub(URL); KalkulatorKredytowyStub.GetRaty gr = new KalkulatorKredytowyStub.GetRaty(); } catch (Exception ex) { } ex.printstacktrace();
implementacja klienta try{ String URL = "http://localhost:4321/axis2/services/kalkulatorkredytowy"; KalkulatorKredytowyStub stub = new KalkulatorKredytowyStub(URL); KalkulatorKredytowyStub.GetRaty gr = new KalkulatorKredytowyStub.GetRaty(); KalkulatorKredytowyStub.Kredyt k = new KalkulatorKredytowyStub.Kredyt(); k.setkwota(120.0f); k.setokres(12); k.setoprocentowanie(0.1f); } catch (Exception ex) { } ex.printstacktrace();
implementacja klienta try{ String URL = "http://localhost:4321/axis2/services/kalkulatorkredytowy"; KalkulatorKredytowyStub stub = new KalkulatorKredytowyStub(URL); KalkulatorKredytowyStub.GetRaty gr = new KalkulatorKredytowyStub.GetRaty(); KalkulatorKredytowyStub.Kredyt k = new KalkulatorKredytowyStub.Kredyt(); k.setkwota(120.0f); k.setokres(12); k.setoprocentowanie(0.1f); gr.setargs0(k); } catch (Exception ex) { } ex.printstacktrace();
implementacja klienta try{ String URL = "http://localhost:4321/axis2/services/kalkulatorkredytowy"; KalkulatorKredytowyStub stub = new KalkulatorKredytowyStub(URL); KalkulatorKredytowyStub.GetRaty gr = new KalkulatorKredytowyStub.GetRaty(); KalkulatorKredytowyStub.Kredyt k = new KalkulatorKredytowyStub.Kredyt(); k.setkwota(120.0f); k.setokres(12); k.setoprocentowanie(0.1f); gr.setargs0(k); KalkulatorKredytowyStub.GetRatyResponse res2 = stub.getraty(gr); } catch (Exception ex) { } ex.printstacktrace();
implementacja klienta try{ String URL = "http://localhost:4321/axis2/services/kalkulatorkredytowy"; KalkulatorKredytowyStub stub = new KalkulatorKredytowyStub(URL); KalkulatorKredytowyStub.GetRaty gr = new KalkulatorKredytowyStub.GetRaty(); KalkulatorKredytowyStub.Kredyt k = new KalkulatorKredytowyStub.Kredyt(); k.setkwota(120.0f); k.setokres(12); k.setoprocentowanie(0.1f); gr.setargs0(k); KalkulatorKredytowyStub.GetRatyResponse res2 = stub.getraty(gr); KalkulatorKredytowyStub.Rata [] raty = res2.get_return(); } catch (Exception ex) { } ex.printstacktrace();
implementacja klienta try{ String URL = "http://localhost:4321/axis2/services/kalkulatorkredytowy"; KalkulatorKredytowyStub stub = new KalkulatorKredytowyStub(URL); KalkulatorKredytowyStub.GetRaty gr = new KalkulatorKredytowyStub.GetRaty(); KalkulatorKredytowyStub.Kredyt k = new KalkulatorKredytowyStub.Kredyt(); k.setkwota(120.0f); k.setokres(12); k.setoprocentowanie(0.1f); gr.setargs0(k); KalkulatorKredytowyStub.GetRatyResponse res2 = stub.getraty(gr); KalkulatorKredytowyStub.Rata [] raty = res2.get_return(); for (int i = 0; i < raty.length; i++) System.out.println("Rata " + (i+1) + "\tkapitał: " + raty[i].getkapital() + "\todsetki: " + raty[i].getodsetki() + "\trazem: " + (raty[i].getkapital() + raty[i].getodsetki()) ); } catch (Exception ex) { ex.printstacktrace(); }
kompilacja i uruchomienie klienta kalkulatora kredytowego Kompilacja: javac -d build/classes/ src/kredyty/client/** Uruchomienie (z katalogu build/classes) java kredyty.client.klientkalkulatorakredytowego