Usare Apache Axis
Sviluppare e Installare un Web
Service


Scrivere una implementazione in Java
Scrivere un deployment descriptor (WSDD) per il servizio



Usare AdminClient di Axis per installare il file WSDD


Verrà usato da Axis per gestire le chiamate SOAP
Usato per indicare i metodi Java che si vogliono esporre come servizio
Comunica alla servlet axis di caricare la classe e ridirigere ad esse le
richieste SOAP
Finito

Axis genera automaticamente il file WSDL per il web service
WSDD di prova
<deployment name="EseguiComando"
xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="EseguiComando" provider="java:RPC">
<parameter name="scope" value="request"/>
<parameter name="className"
value="SoapTest.ECwsImp"/>
<parameter name="allowedMethods"
value="execLocalCommand"/>
</service>
</deployment>
Spiegazione

Usare AdminClient da riga di comando per installare
il servizio sul server



Axis creerà un servizio chiamato


http://localhost:8080/services/EseguiComando
WSDL del servizio


java org.apache.axis.client.AdminClient deploy.wsdd
axis.jar nel classpath.
http://localhost:8080/services/EseguiComando?wsdl
Lista di tutti i servizi

http://localhost:8080/services
Scrivere un client SOAP


Dopo il deploy del servizio si programma il client
per invocarlo
Si possono utilizzare direttamente le API SOAP di
Axis
Esempio SOAP Axis
Service service = new Service();
Call call = (Call) service.createCall();
//Settare il target Endpoint al giusto indirizzo
call.setTargetEndpointAddress( new URL(“http://localhost:8080/axis/services) );
//Invocare l'operazione
call.setOperationName(new QName(“EchoService",“echo"));
call.addParameter( “in0", XMLType.XSD_STRING,
ParameterMode.IN );
call.setReturnType(XMLType.XSD_STRING);
Object ret = call.invoke(new Object[] {in0});
//ret è String o RemoteException in caso di errore.
Un altro metodo

Axis puo' generare automaticamente il codice
necessario a partire dal file WSDL
Usare WSDL2Java

Ottenere il file WSDL del servizio


http://localhost:8080/axis/services/Echo?wsdl
Usare il comando

java org.apache.axis.wsdl.WSDL2Java Echo.wsdl
File generati

Vengono generati 4 file:





Echo.java: interfaccia
EchoService.java: interfaccia client-side
EchoServiceLocator.java: locator che implementa
l'interfaccia
EchoSoapBindingStub.java: utilizza Call di SOAP
come nel primo esempio
Scrivere il programma Java utilizzando i file
Stub di esempio
/**Crea un client per Echo */
Echo myEcho = new
EchoServiceLocator().getEcho(new
URL(http://localhost:8080/axis/services/Echo));
/** Usare il metodo come in locale */
String risposta=
myEcho.echo(“Ciao!”);
Usare gli Stub

Il client visto prima può essere impiegato in qualsiasi
codice Java per eseguire un servizio remoto


Attenzione al classpath


GUI Swing, programmi da riga di comando, JSP, ecc.
I jar di Axis sono necessari sia per il client che per il web
service
In Tomcat, bisogna caricare axis tra le librerie del
server.

tomcat-5.5.x/webapps/app/WEB-INF/lib
Eclipse WTP

http://eclipse.org/webtools

Due principali sottoprogetti

WST (Web Standard Tools)


JST (J2EE Standard Tools)



HTML, XML, CSS, JS, WSDL, SOAP, UDDI, SQL
Servlet, JSP, EJB, JAX-RPC, JDBC, JAXP
Tools per HTML, XML, Web Services, J2EE, Data
Server tools per application servers: Tomcat, JBOSS, WebSphere,
WebLogic, ecc.
Screencast / Demo
Cosa fa il Wizard






Installa il motore SOAP di Axis nel progetto
Genera lo scheletro Java bean per il servizio e le classi per XML
data binding nella cartella src
Copia test.wsdl in WebContent/wsdl/testSOAP.wsdl e imposta
l'endpoint per la Web application creata
Crea il descrittore wsdd di Axis in WebContent/WEB-INF/serverconfig.wsdd
Crea file per deploy e undeploy del Web service in una
sottocartella di WebContent/WEB-INF
Avvia Tomcat
Axis e oltre

IBM SOAP4J -> Apache SOAP -> Axis -> Axis2

SUN JAXWS

Codehaus Xfire

JbossWS

webMethods Glue
SOAPpy, ZSI, wsdl2py
SOAP::Lite, XMLRPC::Lite, UDDI::Lite
C# System.Web.Services;
phpxmlrpc, WSO2
THE END
Grazie per l'attenzione