AXIS2 - tworzenie usługi sieciowej i klienta Axis Data Binding
Transkrypt
AXIS2 - tworzenie usługi sieciowej i klienta Axis Data Binding
AXIS2 - tworzenie usługi sieciowej i klienta Axis Data Binding dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak poniedziałek, 4 kwietnia 2011 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/** poniedziałek, 4 kwietnia 2011 Opis klasy z dokumenty WSDL poniedziałek, 4 kwietnia 2011 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. poniedziałek, 4 kwietnia 2011 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> poniedziałek, 4 kwietnia 2011 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 METAINF): ‣ 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 poniedziałek, 4 kwietnia 2011 Klient kalkulatora kredytowego 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. poniedziałek, 4 kwietnia 2011 Klient kalkulatora kredytowego 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. poniedziałek, 4 kwietnia 2011 Klient kalkulatora kredytowego implementacja klienta try{ String URL = "http://localhost:4321/axis2/services/KalkulatorKredytowy"; KalkulatorKredytowyStub stub = new KalkulatorKredytowyStub(URL); } catch (Exception ex) { ex.printStackTrace(); } poniedziałek, 4 kwietnia 2011 Klient kalkulatora kredytowego 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(); } poniedziałek, 4 kwietnia 2011 Klient kalkulatora kredytowego 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(); } poniedziałek, 4 kwietnia 2011 Klient kalkulatora kredytowego 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(); } poniedziałek, 4 kwietnia 2011 Klient kalkulatora kredytowego 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(); } poniedziałek, 4 kwietnia 2011 Klient kalkulatora kredytowego 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(); } poniedziałek, 4 kwietnia 2011 Klient kalkulatora kredytowego 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(); } poniedziałek, 4 kwietnia 2011 Klient kalkulatora kredytowego kompilacja i uruchomienie klienta kalkulatora kredytowego • Kompilacja: ‣ javac -d build/classes/ src/kredyty/client/** • Uruchomienie (z katalogu build/classes) ‣ java kredyty.client.KlientKalkulatoraKredytowego poniedziałek, 4 kwietnia 2011