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

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

Technologie internetowe laboratorium nr 5. Zabezpieczanie usług sieciowych z wykorzystaniem HTTP Basic Authentication oraz HTTPS

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

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

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

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

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

Remote Method Invocation 17 listopada 2010

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

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Podejście obiektowe do budowy systemów rozproszonych

Aplikacje RMI

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

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

Wywoływanie metod zdalnych

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ć

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

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

Wywoływanie metod zdalnych

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

Programowanie obiektowe

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

Szczegółowy Opis Interfejsu Wymiany Danych. Załącznik nr 1.8.

Aplikacje internetowe i rozproszone - laboratorium

Aplikacje RMI Lab4

public interface TravelAgent { public void makereservation(int cruiseid, int cabinid, int customerid, double price); }

Bezpieczne uruchamianie apletów wg

Przykłady interfejsu TCP i UDP w Javie

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

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

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

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

Programowanie obiektowe

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

Spring Web MVC, Spring DI

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

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

JAVA I SIECI. MATERIAŁY:

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

Rozdział ten przedstawia jeden ze sposobów implementacji usług sieciowych XML i aplikacji klienckich w PHP. Oprogramowanie

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

sieć 4) Mechanizm RMI jest zazwyczaj wykorzystywany w rozwiązaniach typu klient-serwer.

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

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

Zaawansowane aplikacje WWW - laboratorium

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Programowanie rozproszone w języku Java

Enterprise JavaBeans

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

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

Programowanie obiektowe zastosowanie języka Java SE

Git, Bitbucket, IntelliJ IDEA

Zaawansowane aplikacje internetowe - laboratorium

WPROWADZENIE DO JĘZYKA JAVA

Java jako język programowania

Java programowanie w sieci. java.net RMI

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

Wykład 7: Pakiety i Interfejsy

Aplikacja wielowątkowa prosty komunikator

CELAB. Specyfikacja protokołów przesyłania wyników badań

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

Interfejsy w Javie. Przykład zastosowania interfejsów:

Katalog książek cz. 2

SOAP. Autor: Piotr Sobczak

Programowanie w Javie

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Ćwiczenie 1. Przygotowanie środowiska JAVA

ć Ę ć Ę ź Ę

ź Ć Ż

Ę Ż ż Ł ź ż ż ż ż

Ą Ę Ł Ą Ż

ć ć ć

Ż ź Ł

ź Ź Ź ć ć ć ź ć ć ć ć ć Ź

Ą ŚĆ Ś Ś Ę ć

ś ś ś ź ć ś ś

Ę

Ł

ś ś ś ś ś ś ś ś ś ś ć ś Ż Ż ć ś ś Ż ć

ś ść ść ś ść ść ś ś ś ś ść ś ś ś ść ść

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

Programowanie zespołowe

Wykład 2: Podstawy Języka

Zaawansowane aplikacje internetowe laboratorium

Web Services (SOAP) Ćwiczenie 1

Programowanie w Javie cz. 1 Wstęp. Łódź, 24 luty 2014 r.

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

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

elektroniczna Platforma Usług Administracji Publicznej

Aplikacja wielow tkowa prosty komunikator

Katalog książek cz. 3: Web Service

Dokumentacja podłączeniowa dla procesu przenoszenia danych osobowych. Czyli opis jak skorzystać z usługi: rodotransferservice

Języki i metody programowania Java. Wykład 2 (część 2)

Zaawansowane aplikacje internetowe

Systemy Rozproszone - Ćwiczenie 6

Tworzenie i wykorzystanie usług

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

PHP5 WebServices vs MS.NET vs Java vs Java Mobile

Projektowanie aplikacji internetowych laboratorium

Transkrypt:

Technologie internetowe laboratorium nr 4 Instalacja i uruchomienie usługi sieciowej w serwerze Tomcat/AXIS 1. Wprowadzenie i konfiguracja Celem niniejszego laboratorium jest zainstalowanie i uruchomienie usługi sieciowej. Wykorzystany zostanie serwer Tomcat/AXIS, który pozwoli na zainstalowanie usługi sieciowej napisanej w Javie. Instalacja usługi sieciowej w konfiguracji jw. musi zosta ć poprzedzona zainstalowaniem serwera Tomcat/AXIS. Wymagana jest równie ż instalacja Javy. Przykładowa konfiguracja wygląda następująco: 1. JSDK zainstalowany w katalogu /usr/java/j2sdk1.4.2_04 JAVA_HOME=/usr/java/j2sdk1.4.2_04 1. Tomcat zainstalowany w katalogu $HOME/jakartatomcat5.0.19 1. AXIS zainstalowany w katalogu aplikacji webowych serwera Tomcat tj. $HOME/jakartatomcat5.0.19/webapps/axis Przykładowego klienta można skompilowa ć i uruchomi ć w dowolnym katalogu pod warunkiem ustawienia odpowiednich zmiennych środowiskowych jak w załączonym pliku ~/.bashrc. #.bashrc # User specific aliases and functions # Source global definitions if [ f /etc/bashrc ]; then. /etc/bashrc fi export PVM_ROOT="/usr/share/pvm3" export PVM_ARCH="LINUXI386" export PVM_RSH="/usr/bin/ssh" export PATH=$PATH:/users/student/micoinstalled/bin/:/users/student/jendrek/micoinstalled/lib/ export LD_LIBRARY_PATH=/users/student/micoinstalled/lib/:$LD_LIBRARY_PATH export AXIS_HOME=/users/student/jakartatomcat5.0.19/webapps/axis1_1 export AXIS_LIB=$AXIS_HOME/lib export AXISCLASSPATH=$AXIS_LIB/axis.jar:$AXIS_LIB/commons

discovery.jar:$axis_lib/commons logging.jar:$axis_lib/jaxrpc.jar:$axis_lib/saaj.jar:$axis_lib/log4j 1.2.8.jar:$AXIS_LIB/xmlapis.jar:$AXIS_LIB/xercesImpl.jar export AXIS_HOME; export AXIS_LIB; export AXISCLASSPATH 2. Publikacja usługi sieciowej w serwerze Tomcat/AXIS Narzędzie AXIS pozwala na publikacj ę usługi sieciowej na dwa sposoby: 1. Dysponując kodem klasy Javy z publicznymi metodami, AXIS pozwala na łatw ą i szybk ą publikacj ę usługi poprzez zamian ę rozszerzenia.java na.jws (Java Web Service) i umieszczenie w katalogu AXIS tj. w przykładzie powyżej w katalogu $HOME/jakartatomcat5.0.19/webapps/axis. 2. W przypadku konieczności określenia dodatkowych parametrów publikowanej usługi takich jak dostępne dla klienta metody (nie wszystkie metody klasy musz ą być udostępniane), ewentualnie narzędzi logujących wywoływanie metod usługi sieciowej i ich parametry (jak pliki logów), należy wykorzysta ć pliki WSDD, (Web Service Deployment Descriptor), które określaj ą ww. parametry. Instalacja usługi sieciowej zdefiniowanej w pliku deploy.wsdd wygląda następująco: java org.apache.axis.client.adminclient deploy.wsdd Po uruchomieniu serwera Tomcat poleceniem:./startup.sh (system Linux) w podkatalogu bin głównego katalogu Tomcata (powyżej jest to $HOME/jakartatomcat5.0.19), należy zweryfikowa ć poprawno ść funkcjonowania systemu AXIS poprzez wywołanie http://localhost:8080/axis w oknie przeglądarki. 3. Instalacja przykładowej usługi sieciowej Poniższy przykład ilustruje usług ę sieciow ą, która uruchamia zadan ą aplikacj ę na serwerze (w tym przypadku na serwerze, na którym uruchomiony zosta ł serwer Tomcat/AXIS). Klasa z metod ą realizując ą powyższe zadanie może mie ć następującą posta ć: import java.io.*; public class RunTaskServer { public int RunTask(String taskname) { try { Process p = Runtime.getRuntime().exec(taskname); catch (IOException e1) { System.err.println(e1); System.exit(1); return 0;

Kod ten umieszczony jest w pliku RunTaskServer.java. W celu łatwej instalacji usługi w serwerze Tomcat/AXIS należy przekopiowa ć ten plik jako RunTaskServer.jws i umieści ć w katalogu webapps/axis serwera Tomcat. Po uruchomieniu serwera Tomcat, usługa powinna by ć dostępna pod następującym URL: http://localhost:8080/axis/runtaskserver.jws co można zweryfikowa ć dzięki przeglądarce internetowej. 4. Opis usługi sieciowej w języku WSDL Jednocześnie, po instalacji usługi sieciowej jak opisano powyżej, można w łatwy sposób (poprzez odwołanie do URL: http://localhost:8080/axis/runtaskserver.jws?wsdl) uzyskać opis usługi w języku WSDL (Web Service Description Language). W szczególności, opis ten określa sygnatury metod dostępnych w ramach usługi sieciowej, a więc typy argumentów, kolejno ść argumentów jak równie ż, m.in. lokalizacj ę usługi jw. Opis usługi pozwala klientowi, potencjalnie klientowi dostawcy usług sieciowych, na zdalne wywołanie usługi. Klient, na podstawie opisu w języku WSDL, może napisa ć i uruchomi ć program klienta, który pozwoli usług ę wywoła ć. Poniżej przedstawiono opis usługi sieciowej realizującej metod ę uruchomienia zadania na serwerze. W szczególności message RunTaskRequest określa argumenty wejściowe metody (tutaj jeden argument typu xsd:string, mapowany w Javie na String), RunTaskRespone argumenty wyjściowe metody (xsd:int, mapowany w Javie na int). Element operation określa nazw ę metody i odwołuje si ę do argumentów zdefiniowanych jako elementy message i opisane powyżej. Element binding określa protokó ł (SOAP/HTTP), za ś element port lokalizacj ę usługi (tutaj http://localhost:8080/axis/runtaskserver.jws). S ą to elementy niezbędne i wystarczające klientowi do wywołania metody danej usługi. <wsdl:definitions targetnamespace="http://localhost:8080/axis/runtaskserver.jws/axis/runtaskserver.jws "> <wsdl:message name="runtaskrequest"> <wsdl:part name="taskname" type="xsd:string"/> </wsdl:message> <wsdl:message name="runtaskresponse"> <wsdl:part name="return" type="xsd:int"/> </wsdl:message> <wsdl:porttype name="runtaskserver"> <wsdl:operation name="runtask" parameterorder="taskname"> <wsdl:input message="intf:runtaskrequest" name="runtaskrequest"/> <wsdl:output message="intf:runtaskresponse" name="runtaskresponse"/>

</wsdl:operation> </wsdl:porttype> <wsdl:binding name="runtaskserversoapbinding" type="intf:runtaskserver"> <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="runtask"> <wsdlsoap:operation soapaction=""/> <wsdl:input name="runtaskrequest"> <wsdlsoap:body encodingstyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://localhost:8080/axis/runtaskserver.jws/axis/runtaskserver.jws" use="encoded"/> </wsdl:input> <wsdl:output name="runtaskresponse"> <wsdlsoap:body encodingstyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://localhost:8080/axis/runtaskserver.jws/axis/runtaskserver.jws" use="encoded"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="runtaskserverservice"> <wsdl:port binding="intf:runtaskserversoapbinding" name="runtaskserver"> <wsdlsoap:address location="http://localhost:8080/axis/runtaskserver.jws"/> </wsdl:port> </wsdl:service> </wsdl:definitions> AXIS pozwala na wygenerowanie zarówno plików pomocniczych dla klienta (stub) oraz dla serwera (skeleton, implementacja itd.) w celu odpowiednio napisania programu klienta i implementacji właściwej usługi na podstawie opisu WSDL. W tym przypadku, z punktu widzenia klienta, istotna jest pierwsza funkcja. Wywołanie ma posta ć: java org.apache.axis.wsdl.wsdl2java RunTaskServer.jws.xml W katalogu localhost, wygenerowane zostan ą następujące pliki: RunTaskServer.java RunTaskServerServiceLocator.java RunTaskServerService.java RunTaskServerSoapBindingStub.java Odpowiednie klasy znajduj ą si ę w pakiecie localhost. Przykładowa implementacja klienta (uruchomienie programu emacs na serwerze) może wygląda ć nastepująco: import java.io.*; import localhost.*;

public class RunTaskClient { public static void main(string [] args) throws Exception { RunTaskServerService service = new RunTaskServerServiceLocator(); RunTaskServer port = service.getruntaskserver(); try { port.runtask("emacs"); catch (IOException e) { // Implementacja ta ukrywa np. lokalizacj ę usługi, która z kolei zakodowana jest w klasach pomocniczych, wygenerowanych wcześniej. Pozwala to klientowi na wywołanie właściwej metody bez implementacji szczegółów określonych ju ż w opisie WSDL. Kod programu powinien zosta ć umieszczony w katalogu nadrzędnym w stosunku do katalogu pakietu localhost. Wywołanie programu wygląda wówczas następująco: java RunTaskClient Klienta można równie ż zaimplementowa ć w sposób następujący, bez użycia wygenerowanych wcześniej narzędziem WSDL2Java plików: import org.apache.axis.client.call; import org.apache.axis.client.service; import org.apache.axis.encoding.xmltype; import org.apache.axis.utils.options; import javax.xml.rpc.parametermode; public class RunTaskClient1 { public static void main(string [] args) throws Exception { Options options = new Options(args);

String endpoint = "http://localhost:" + options.getport() + "/axis/runtaskserver.jws"; args = options.getremainingargs(); String method = "RunTask"; String s1 = new String(args[0]); Service service = new Service(); Call call = (Call) service.createcall(); call.settargetendpointaddress( new java.net.url(endpoint) ); call.setoperationname( method ); call.addparameter( "op1", XMLType.XSD_STRING, ParameterMode.IN ); call.setreturntype( XMLType.XSD_INT ); Integer ret=(integer) call.invoke( new Object [] { s1 ); System.out.println("Got result : " + ret); Wywołanie wygląda wówczas: java RunTaskClient1 emacs Dla argumentów typu inout lub out, wygenerowane zostan ą klasy Holder, które posiadają pole value typu, który opakowuj ą. W ten sposób serwer może przypisa ć wartości zwracane następnie klientowi. Szczegóły dostępne pod adresem: http://ws.apache.org/axis/java/userguide.html#wsdl2javabuildingstubsskeletonsanddatatypesfromwsdl W przypadku konieczności, przy kompilacji i uruchomieniu, należy poda ć odpowiednie

ścieżki do odpowiednich pakietów np.: javac classpath $AXISCLASSPATH... java cp $AXISCLASSPATH... Literatura 1. AXIS User's Guide. http://ws.apache.org/axis/java/userguide.html 2. Refsnes Data. WSDL Tutorial. http://www.w3schools.com/wsdl/default.asp