AXIS2 - tworzenie usługi sieciowej i klienta Axis Data Binding. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak



Podobne dokumenty
Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej

Wieloplatformowe aplikacje sieciowe. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak

Technologie internetowe laboratorium nr 4. Instalacja i uruchomienie usługi sieciowej w serwerze Tomcat/AXIS

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Podstawy języka Java. przygotował:

Programowanie w Internecie. Podstawy użycia JSP. Paweł Kasprowski. vl06z

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

Wywoływanie metod zdalnych

Zaawansowane aplikacje internetowe - laboratorium

Remote Method Invocation 17 listopada 2010

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Podejście obiektowe do budowy systemów rozproszonych

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Wywoływanie metod zdalnych

Programowanie obiektowe zastosowanie języka Java SE

Aplikacje RMI

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Tworzenie i wykorzystanie usług sieciowych

Podejście obiektowe do budowy systemów rozproszonych

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Klasy i obiekty cz II

2) W wyświetlonym oknie należy zaznaczyć chęć utworzenia nowej aplikacji (wygląd okna może się różnić od powyższego); kliknąć OK

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Ćwiczenie 1. Przygotowanie środowiska JAVA

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1

Programowanie Obiektowe GUI

Nexto.API. Przykładowy klient Java 1.6 do systemu zamówień NextoAPI. Przygotował Rafał Ozga e-kiosk S.A. Maj 2015,

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Programowanie obiektowe

Wyjątki (exceptions)

Metody dostępu do danych

Aplikacje RMI Lab4

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Tworzenie i wykorzystanie usług

Zad.30. Czy można utworzyć klasę, która implementuje oba interfejsy?

Laboratorium 10 - Web Services

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

1. Co można powiedzieć o poniższym kodzie? public interface I { void m1() {}; static public void m2() {}; void abstract m3();

Wykład 7: Pakiety i Interfejsy

Podstawowe wykorzystanie Hibernate

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Zaawansowane aplikacje internetowe

Bezpieczne uruchamianie apletów wg

Javadoc. Piotr Dąbrowiecki Sławomir Pawlewicz Alan Pilawa Joanna Sobczyk Alina Strachocka

Wykład 5 Okna MDI i SDI, dziedziczenie

Enkapsulacja, dziedziczenie, polimorfizm

Zaawansowane aplikacje internetowe - laboratorium Web Services (część 2).

Zaawansowane aplikacje internetowe - laboratorium Web Services (część 1).

Zaawansowane aplikacje internetowe laboratorium

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Instrukcja 10 Laboratorium 13 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Dostęp do komponentów EJB przez usługi Web Services

Zaawansowane aplikacje WWW - laboratorium

Java Podstawy. Michał Bereta

Programowanie obiektowe

Systemy Rozproszone - Ćwiczenie 6

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

akademia androida Pierwsze kroki w Androidzie część I

Aplikacje Internetowe. przygotował:

Języki i metodyka programowania. Język C# pętle, sterowanie, wyjątki

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Aplikacje internetowe i rozproszone - laboratorium

Aplikacje Internetowe. Zakres przedmiotu. Plan ramowy. Tworzenie aplikacji internetowych w języku Java w środowisku Eclipse

Java: interfejsy i klasy wewnętrzne

Automaty do zadań specjalnych. Olga Maciaszek-Sharma, Artur Kotow Wersja 1,

Wprowadzenie do laboratorium. Zasady obowiązujące na zajęciach. Wprowadzenie do narzędzi wykorzystywanych podczas laboratorium.

Aplikacje w środowisku Java

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Wykład 2: Podstawy Języka

Java jako język programowania

AKADEMIA GÓRNICZO-HUTNICZA Wydział Elektrotechniki, Automatyki, Elektroniki i Informatyki

Dokumentacja kompilacji źródeł aplikacji 1.0

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

1. Uruchomić i skonfigurować środowisko tworzenia aplikacji i serwer aplikacji.

Enterprise JavaBeans (EJB)

Multimedia JAVA. Historia

Programowanie obiektowe

Wykład 4: Klasy i Metody

RMI-2. Java Remote Method Invocation (RMI) na podstawie m.in. podręcznika firmy Sun Microsystems SYSTEMY ROZPROSZONE

Wyjątki Monika Wrzosek (IM UG) Programowanie obiektowe 180 / 196

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Podstawy i języki programowania

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

Programowanie Urządzeń Mobilnych. Laboratorium nr 7, 8

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Języki i metody programowania Java Lab1 Zofia Kruczkiewicz

Aplikacje RMI. Budowa aplikacji rozproszonych. Część 2.

Tworzenie aplikacji internetowych w języku Java

Java Język programowania

Wykorzystywanie parsera DOM w programach Java i PL/SQL

Łukasz Przywarty Wrocław, r. Grupa: WT/N 11:15-14:00. Sprawozdanie z zajęć laboratoryjnych: OpenSSL - API

Transkrypt:

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