servicii web cu jax-ws
TRANSCRIPT
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
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.
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
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.
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):
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”).
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).
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:
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
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:
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:
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:
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").
Dezvoltarea Aplicaţiilor Internet Laborator 8 – 2010
14
Se deschide proiectul "Calculator" din zona de "Samples":
Se încheie crearea proiectului:
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:
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