Sei sulla pagina 1di 4

Creare delle utility Axis2 in 10 passi Rosario Turco Molti prodotti Open Source, spesso per essere estesi

nelle proprie funzionalit hanno bisogno di lavorare con un webservice di Axis2. Fate attenzione che esiste una grande differenza tra Axis e Axis2 e tra le modalit con cui realizzare il webservice. Il framework disponibile di Apache Axis2 (1.5.4 o 1.6), permette di: Creare webservice Consumare webservice

Fornisce: strumenti a riga di comando Un server SOAP stand-alone Una web application che ospita i Web service allinterno di una servlet container

La User guide al link: http://axis.apache.org/axis2/java/core/docs/quickstartguide.html#axiom http://axis.apache.org/axis2/java/core/docs/adv-userguide.html Nel seguito ipotizziamo che: 1. Usiamo Axis2; per cui installiamo su C: Axis2 versione 1.5.4 o 1.x.y superiore; meglio la versione axis2-1.x.y-bin che contiene anche le utility per la creazione delle wsdl da java e viceversa. 2. Settiamo PATH ad %AXIS2_HOME%\bin 3. Inseriamo in CLASSPATH tutti i jar che sono in %AXIS2_HOME%\lib. 4. Installiamo su C: anche ANT (versione 1.8.2 o superiore), configuriamo ANT_HOME e inseriamo nel PATH anche %ANT_HOME%\bin 5. Creiamo una directory Env sul desktop e facciamo switch workspace di Eclipse Galyleo o Helios su essa 6. Scriviamo con Eclipse la classe con i metodi che ci servono e testiamola, giusto per avere un riferimento da cui partire ed ottenere wsdl ed il resto; ad esempio supponiamo che si debba

Pag.

realizzare una utility che ci permetta di ricavare una variabile di ambiente. Successivamente la completeremo anche con ulteriori metodi utili, una volta capito come lavorarci. 7. Creiamo con Eclipse il progetto EnvProj. Dentro src creiamo il package envHandlingWS Nel package creiamo il sorgente EnvHandlingWS.java come segue:
package envHandlingWS; import java.util.*; public class EnvHandlingWS { public String getVar(String envVar) throws Exception{ String var = System.getenv(envVar); return(var); } }

Creiamo un sorgente Test.java per testare


package envHandlingWS; import java.util.*; public class Test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String my=null; Map map = null; EnvHandlingWS eH = new EnvHandlingWS(); try{ my = eH.getVar("PATH"); }catch(Exception e){ System.out.print(e); } System.out.print(my); } }

Su Test.java fare tasto destro del mouse -> Run As -> Java Application e il test mostra il corretto funzionamento della classe dando linformazione ad esempio sulla variabile PATH. Questa src quella di Eclipse da tenere distinta rispetto alla src che le utility di Axis2 creeranno. 8. Ora scendiamo in EnvProj\src\envHandlingWS e compiliamo qui la classe che ci interessa, col comando: javac EnvHandlingWS.java Risaliamo alla directory EnvProj/src. Da qui creiamo la wsdl col comando: java2wsdl -cp . -cn envHandlingWS.EnvHandlingWS 9. Ci sono varie tecniche per lavorare con AXIS2: AXIOM ADB

Pag.

XMLBEAN JiBX

Noi usiamo quella XMLBEAN; adesso sempre da EnvProj/src (di Eclipse) otteniamo il codice sorgente nella src sotto Env di AXIS2 col comando: wsdl2java -uri EnvHandlingWS.wsdl s -ss -sd ssi -d xmlbeans -o ../.. -p org.apache.axis2.env Questo creer una src con i sorgenti nella parte org.apache.axis2.env: EnvHandlingWSSkeleton.java EnvHandlingWSMessageReceiverInOut.java ExceptionException.java Essi conterranno i metodi esposti nella wsdl, e le eccezioni come nella classe di partenza. Nello Skeleton dobbiamo implementare la Business Logic laddove c il commento prodotto da Axis2: //TODO : fill this with the necessary business logic Di grande importanza sono adesso i sorgenti che ci permettono di lavorare sui tipi e che sono localizzati adesso in Env/src/envhandlingws: GetVarResponseDocument.java GetVarDocument.java ExceptionDocument.java Exception.java Aggiungiamo gli import che ci servono nello Skeleton per poter lavorare con le classi di sopra e modificare alla fine lo skeleton, per quello che ci serve per lesempio:
/** * EnvHandlingWSSkeleton.java * * This file was auto-generated from WSDL * by the Apache Axis2 version: 1.5.4 Built on : Dec 19, 2010 (08:18:42 CET) */ package org.apache.axis2.env; import envhandlingws.*; import java.util.*; /** * EnvHandlingWSSkeleton java skeleton for the axisService */ public class EnvHandlingWSSkeleton{ /** * Auto generated method signature * * @param getVar * @throws ExceptionException : */

Pag.

public envhandlingws.GetVarResponseDocument getVar ( envhandlingws.GetVarDocument getVar ) throws ExceptionException{ //TODO : fill this with the necessary business logic String envParam = getVar.getGetVar().getArgs0(); String var = System.getenv(envParam); envhandlingws.GetVarResponseDocument var2 = envhandlingws.GetVarResponseDocument.Factory.newInstance(); envhandlingws.GetVarResponseDocument.GetVarResponse res = var2.addNewGetVarResponse(); res.setReturn(var); return(var2); } }

10. Ora occorre creare larchive file aar; spostiamoci nella Env e prima compiliamo col comando: ant a compilazione ok, otteniamo la lib EnvHandlingWS.aar in Env\build\lib Il servizio si pu deployare copiando il file ".aar" nella directory "services" "/webapps/axis2/WEBINF" del servlet container (ad esempio Tomcat o di Axis2 per farne la prova) 11. Restartare Tomcat, e chiamare http://localhost:8080/axis2 per vedere se il servizio stato deployato. A questo punto si dispone della libreria aar e del servizio da usare. Alla prox.

Pag.