servicii web cu jax-ws

16
Dezvoltarea Aplicaţiilor Internet Laborator 8 2010 1 Servicii Web cu JAX-WS Un serviciu Web este o aplicaţie Web specială, care foloseşte protocoale uzuale de transport pentru a schimba date în format XML între client şi server. Serverul oferă o listă de metode Web, metode care sunt apelabile "la distanţă" de către clienţi. Clientul trimite argumentele apelului ca o structură XML, iar serverul returnează rezultatele tot ca o structură XML. 1. Servicii Web realizate cu Apache CXF 1.1. Operaţii pregătitoare Se descarcă arhiva apache-cxf-2.3.0.zip de la adresa http://cxf.apache.org/ şi se desface (de exemplu) în directorul “c:\DAI\apache-cxf-2.3.0\”, care va fi setat apoi ca valoare a variabilei de mediu CXF_HOME. Alternativ se poate descărca şi o versiune anterioară a CXF. Se descarcă kitul aplicaţiei soapUI-x32-3_6_1.exe de la adresa http://www.soapui.org/ şi se lansează în execuţie, pentru a instala utilitarul SoapUI. În mod implicit instalarea se face în directorul “C:\Program Files\eviware”. Se poate descarca si documentatia SoapUI aferenta, disponibila la adresa http://sourceforge.net/projects/soapui/files/soapui/ în arhiva (cea mai recentă) soapui-docs-3.5.1.zip. Se descarcă arhiva apache-ant-1.8.1-bin.zip de la adresa http://ant.apache.org/ . Se poate folosi şi o versiune anterioară. Se expandează aceasta arhivă într-un director, de exemplu în “c:\DAI\apache-ant- 1.8.1\, care va fi setat apoi ca valoare a variabilei de mediu ANT_HOME. 1.2. Utilizarea unor exemple cu Apache CXF Subdirectorul “samples” din directorul CXF_HOME conţine mai multe exemple şi un fişier README.txt cu instrucţiuni de operare pentru folosirea acestor exemple. În general se folosesc doua ferestre shell pentru introducere comenzi (una pentru pornire server şi una pentru lansare client) şi, în fiecare din ele, trebuie executate in prealabil urmatoarele comenzi, adaptate corespunzător: set CXF_HOME=C:\cxf set ANT_HOME=C:\ant set PATH=%PATH%;%ANT_HOME%\bin;%CXF_HOME%\bin set CLASSPATH=.;%CXF_HOME%\lib\cxf-manifest.jar;.\build\classes Pentru a nu repeta introducere primelor trei comenzi in fiecare fereastra se pot introduce aceste comenzi in fisierul de tip AUTOEXEC.BAT (%SystemRoot%\system32\AUTOEXEC.NT) care e folosit implicit pentru initializarea mediulului de executie pentru ferestrele de tip linie de comanda

Upload: others

Post on 23-May-2022

23 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Servicii Web cu JAX-WS

Dezvoltarea Aplicaţiilor Internet Laborator 8 – 2010

1

Servicii Web cu JAX-WS

Un serviciu Web este o aplicaţie Web specială, care foloseşte protocoale uzuale de transport pentru a

schimba date în format XML între client şi server. Serverul oferă o listă de metode Web, metode care

sunt apelabile "la distanţă" de către clienţi. Clientul trimite argumentele apelului ca o structură XML,

iar serverul returnează rezultatele tot ca o structură XML.

1. Servicii Web realizate cu Apache CXF

1.1. Operaţii pregătitoare

Se descarcă arhiva apache-cxf-2.3.0.zip de la adresa http://cxf.apache.org/ şi se desface (de exemplu) în

directorul “c:\DAI\apache-cxf-2.3.0\”, care va fi setat apoi ca valoare a variabilei de mediu

CXF_HOME. Alternativ se poate descărca şi o versiune anterioară a CXF.

Se descarcă kitul aplicaţiei soapUI-x32-3_6_1.exe de la adresa http://www.soapui.org/ şi se lansează în

execuţie, pentru a instala utilitarul SoapUI. În mod implicit instalarea se face în directorul “C:\Program

Files\eviware”.

Se poate descarca si documentatia SoapUI aferenta, disponibila la adresa

http://sourceforge.net/projects/soapui/files/soapui/ în arhiva (cea mai recentă) soapui-docs-3.5.1.zip.

Se descarcă arhiva apache-ant-1.8.1-bin.zip de la adresa http://ant.apache.org/. Se poate folosi şi o

versiune anterioară. Se expandează aceasta arhivă într-un director, de exemplu în “c:\DAI\apache-ant-

1.8.1\”, care va fi setat apoi ca valoare a variabilei de mediu ANT_HOME.

1.2. Utilizarea unor exemple cu Apache CXF

Subdirectorul “samples” din directorul CXF_HOME conţine mai multe exemple şi un fişier

README.txt cu instrucţiuni de operare pentru folosirea acestor exemple.

În general se folosesc doua ferestre shell pentru introducere comenzi (una pentru pornire server şi una

pentru lansare client) şi, în fiecare din ele, trebuie executate in prealabil urmatoarele comenzi, adaptate

corespunzător:

set CXF_HOME=C:\cxf

set ANT_HOME=C:\ant

set PATH=%PATH%;%ANT_HOME%\bin;%CXF_HOME%\bin

set CLASSPATH=.;%CXF_HOME%\lib\cxf-manifest.jar;.\build\classes

Pentru a nu repeta introducere primelor trei comenzi in fiecare fereastra se pot introduce aceste

comenzi in fisierul de tip AUTOEXEC.BAT (%SystemRoot%\system32\AUTOEXEC.NT) care e

folosit implicit pentru initializarea mediulului de executie pentru ferestrele de tip linie de comanda

Page 2: Servicii Web cu JAX-WS

Dezvoltarea Aplicaţiilor Internet Laborator 8 – 2010

2

(interpretor de comenzi) sau se introduc sau se modifica variabile “Environment Variables”

(MyComputer -> Properties -> Advanced -> Environment Variables.

Pentru a folosi exemplul din directorul “c:\cxf\samples\java_first_jaxws” se procedeaza astfel:

Se deschide o fereastra linie de comandă, se navighează în directorul aplicaţiei (unde se afla fişierul

“build.xml”) şi se porneşte server-ul pentru acest serviciu:

ant server

Se deschide o fereastra linie de comandă, se navighează în directorul aplicaţiei (unde se afla fişierul

“build.xml”) şi se lanseaza un client al acestui serviciu:

ant client

Este bine ca cele 2 ferestre sa fie vizibile simultan pe ecran. Se urmareste ce se afiseaza in fiecare din

ferestre si apoi se opreste serverul cu Ctrl-C.

Page 3: Servicii Web cu JAX-WS

Dezvoltarea Aplicaţiilor Internet Laborator 8 – 2010

3

Serverul se opreste singur dupa un timp (5 minute):

Acest interval de timp se poate modifica in fisierul “Server.java”, la instructiunea:

Pentru a vedea continutul fisierului WSDL asociat unui serviciu se introduce adresa acestuia intr-un

program browser (Mozilla, IE). Pentru serviciul din exemplul “java_first_jaxws” adresa este:

http://localhost:9000/helloWorld?wsdl

Page 4: Servicii Web cu JAX-WS

Dezvoltarea Aplicaţiilor Internet Laborator 8 – 2010

4

Se procedează similar şi cu alte exemple:

“wsdl_first”

“jax_rs\basic”

"java_first_pojo"

1.3. Utilizare SoapUI

SoapUI este un utilitar care permite accesarea si testarea serviciilor Web. El simuleaza un client de

serviciu Web pe baza fisierului WSDL care descrie acel serviciu. Simularea consta in generarea de

cereri catre serviciul Web si afisarea raspunsului primit de la serviciu. Atat cererea, cat si raspunsul,

sunt prezentate in format XML, cererea fiind editabila. Inainte de crearea unui proiect SoapUI trebuie

pornit serverul care ofera serviciul pentru care se genereaza si se trimit cereri de catre SoapUI.

Page 5: Servicii Web cu JAX-WS

Dezvoltarea Aplicaţiilor Internet Laborator 8 – 2010

5

Se lanseaza aplicatia SoapUI folosind imaginea plasata pe desktop sau din meniu cu Start-

>Programs->…

Se porneste serverul CXF pentru aplicatie.

Se va crea un nou proiect cu Ctrl-N sau prin click dreapta pe “Projects”:

In campul “Initial WSDL” se introduce calea catre fisierul wsdl

(http://localhost:9000/helloWorld?wsdl), iar in campul “Project Name” se introduce un nume oarecare

(de exemplu “Test1”):

Se face click pe butonul “OK”. Daca serverul nu e pornit sau nu e corecta adresa atunci se cauta

continuu fisierul wsdl in fereastra “Progress”; se va actiona butonul “Cancel” in acest caz.

o Daca serverul e pornit si adresa este corecta se adauga in fereastra din stanga numele proiectului

si subdirectorul HelloWorldSoapBinding cu numele metodei oferite de serviciu (sayHi):

Page 6: Servicii Web cu JAX-WS

Dezvoltarea Aplicaţiilor Internet Laborator 8 – 2010

6

Pentru a genera o noua cerere catre una din metode se face click dreapta pe numele metodei sau Ctrl-

N. Pentru afisarea unei cereri se face dublu click pe numele ei (“Request n”).

Pentru a trimite cererea la server se face click pe prima imagine din bara de instrumente a ferestrei in

care se afiseaza cererea generata (un triunghi verde cu varful spre dreapta).

Metoda “sayHi” are un parametru marcat in cerere printr-un semn de intrebare („?‟) intre marcajele

<arg0> si </arg0>. Inainte de a trimite o cerere cu parametri se va inlocui „?‟ cu valoarea parametrului

(un nume pentru “sayHi”).

Daca serverul este activ atunci se afiseaza raspunsul intr-o noua fereastra.

1.4. Crearea unor noi servicii Web cu Apache CXF

Pentru a refolosi fisierul “build.xml” vom copia un exemplu CXF si il vom modifica treptat, verificand

functionarea lui dupa fiecare modificare.

Daca au fost greseli este bine sa se stearga subdirectorul “build” inainte de o noua lansare a serverului

si a clientului (“ant clean” sau prin alte comenzi).

1.4.1 Aplicatia “HelloWorld” modificata

Se copiaza subdirectorul “java_first_jaxws” intr-un nou subdirector “Hello” (tot in “samples”).

Se sterge directorul “build”.

Se simplifica structura de subdirectoare din aplicatie, eliminand directoarele intermediare “demo” si

“hw” (directoarele “client” si server” vor fi mutate direct sub “src”).

Page 7: Servicii Web cu JAX-WS

Dezvoltarea Aplicaţiilor Internet Laborator 8 – 2010

7

Se modifica in toate sursele instructiunile “package” si “import”.

Se modifica si in fisierul “build.xml” la marcajul <cxfrun> valoarea atributului “classname” (de trei

ori).

Page 8: Servicii Web cu JAX-WS

Dezvoltarea Aplicaţiilor Internet Laborator 8 – 2010

8

Se lanseaza in ferestre separate serverul si clientul pentru apelarea noului serviciu:

Alternativ, se poate folosi SoapUI pentru apelarea noului serviciu:

Cu serverul pornit se poate modifica clientul si relanseaza in executie:

Page 9: Servicii Web cu JAX-WS

Dezvoltarea Aplicaţiilor Internet Laborator 8 – 2010

9

1.4.2 Aplicaţia “Age”

In aceasta aplicatie clientul transmite numele si anul nasterii, iar serviciul calculeaza si intoarce la

client varsta, ca numar de ani.

Se copiaza subdirectorul “Hello” intr-un nou subdirector “Age”.

Se modifica numele interfetei in “Age” si numele metodei in “sayAge”; metoda va avea doi parametri:

String sayAge (String name, Integer birth);

Se modifica clasa care implementeaza interfata (“AgeImpl”), numele si continutul metodei:

public String sayAge (String name, Integer birth) {

return name + " is " + (new java.util.Date().getYear() +

1900 - birth.intValue()) + " years old";

}

Se lanseaza serverul si clientul.

Se genereaza cereri catre serviciu din SoapUI (cererile au doi parametri care trebuie completati).

2. Servicii Web realizate cu Apache Axis2

2.1. Operaţii pregătitoare

Se descarca arhiva axis2-1.5.3-bin.zip de la adresa http://ws.apache.org/axis2/ si se desface in

directorul “C:\axis2”, care va fi setat ca valoare a variabilei de mediu AXIS2_HOME.

Este bine să se adauge la variabila de mediu PATH urmatoarea cale: “%AXIS2_HOME%\bin”.

Se poate descarca si arhiva web axis2-1.5.3-war.zip, precum si documentatia axis2-1.5.3-docs.zip.

Serverul incorporat Axis2 poate fi rulat cu urmatoarea comada:

%AXIS2_HOME%\bin\axis2server.bat

Page 10: Servicii Web cu JAX-WS

Dezvoltarea Aplicaţiilor Internet Laborator 8 – 2010

10

Dupa pornirea serverului, toate serviciile Web incluse si instalate in Axis2 vor fi disponibile la:

http://localhost:8080/axis2/services/

2.2. Utilizarea unor exemple cu Apache Axis2

Subdirectorul “samples” din directorul AXIS2_HOME contine mai multe exemple care folosesc

Axis2. Trebuie setata in prealabil variabila de mediu AXIS2_HOME care sa indice directorul in care e

instalat Axis2:

set AXIS2_HOME=C:\axis2

Pentru a folosi exemplul din directorul “c:\axis2\samples\pojo” se procedeaza astfel:

Se face build pentru aplicatia Pojo:

Page 11: Servicii Web cu JAX-WS

Dezvoltarea Aplicaţiilor Internet Laborator 8 – 2010

11

Se verifica aparitia arhivei “AddressBookService.aar” in directorul

“%AXIS2_HOME%\repository\services\”:

Se lanseaza serverul:

Dupa lansarea serverului, lista de servicii s-a extins cu noul serviciu:

Page 12: Servicii Web cu JAX-WS

Dezvoltarea Aplicaţiilor Internet Laborator 8 – 2010

12

Fisierul wsdl al noului serviciu Web este disponibil la adresa:

Serviciul Web poate fi testat folosind un client care insoteste exemplul (detalii in fisierul Readme.txt):

Serviciul Web poate fi testat si folosind SoapUI:

Page 13: Servicii Web cu JAX-WS

Dezvoltarea Aplicaţiilor Internet Laborator 8 – 2010

13

2.3. Exemple

Sa se verifice alte 2 exemple de servicii Web Axis2. Descrierea exemplelor disponibile se gaseste in

documentul “userguide-samples.html” din arhiva "axis2-1.5.3-docs.zip". Exista si fisiere Readme in

fiecare director existent.

3. Folosire NetBeans

Se poate instala un plug-in SoapUI pentru NetBeans (fişierul "com-eviware-soapui-netbeans-

module.nbm" disponibil la adresa http://www.soapui.org/IDE-Plugins/installation.html în secţiunea

"IDE Plugins").

Page 14: Servicii Web cu JAX-WS

Dezvoltarea Aplicaţiilor Internet Laborator 8 – 2010

14

Se deschide proiectul "Calculator" din zona de "Samples":

Se încheie crearea proiectului:

Page 15: Servicii Web cu JAX-WS

Dezvoltarea Aplicaţiilor Internet Laborator 8 – 2010

15

Se compilează şi apoi rulează cele 2 proiecte care se deschid, în ordinea server, client.

Se lansează serverul:

Se lansează clientul:

Page 16: Servicii Web cu JAX-WS

Dezvoltarea Aplicaţiilor Internet Laborator 8 – 2010

16

Se cere rezultatul:

4. Resurse

Resurse utile:

http://cxf.apache.org/

http://cxf.apache.org/docs/index.html

http://ant.apache.org/

http://ant.apache.org/bindownload.cgi

http://www.soapui.org/

http://www.soapui.org/IDE-Plugins/installation.html

http://sourceforge.net/projects/soapui/files/

http://axis.apache.org/axis2/java/core/

http://axis.apache.org/axis2/java/core/docs/jaxws-guide.html

http://axis.apache.org/axis2/java/core/download.cgi

http://jax-ws.java.net/

http://netbeans.org/kb/docs/websvc/jax-ws.html