Apache Axis2 È Un'infrastruttura Di Apache Software Foundation Per Creare, Pubblicare E Consumare Web Service in Java

Apache Axis2 È Un'infrastruttura Di Apache Software Foundation Per Creare, Pubblicare E Consumare Web Service in Java

Apache Axis2 è un'infrastruttura di Apache Software Foundation per creare, pubblicare e consumare Web Service in Java. Axis2 fornisce: 1. strumenti da riga di comando per creare e usare Web Service 2. un server SOAP stand-alone 3. una Web application che ospita i Web Service all'interno di un servlet container. Il sito ufficiale di Axis 2 è: http://ws.apache.org/axis2/ 1. Installare il jdk (1.5 o superiore) prima di procedere con l'installazione di Axis2. 2. Impostare la variabile d'ambiente JAVA_HOME al pathname in cui è installato il JDK Installare Tomcat 1. Download di tomcat da http://tomcat.apache.org/ 2. Selezionare la Binary Distributions 3. Scompattare il contenuto dell'archivio in (es.) /opt/apache-tomcat-7.0.34 4. Impostare la variabile d'ambiente CATALINA_HOME=/opt/apache-tomcat-7.0.34 (export CATALINA_HOME) nel file /home/miaHome/.bashrc ricordarsi di fare un source al termine 5. Avviare il server con il seguente comando: $ sh $CATALINA_HOME/bin/catalina.sh run 6. Testare tomcat (nella barra degli indirizzi del browser scrivere: localhost:8080 o se ci sono problemi usare meglio l'IP della macchina al posto di localhost) Installare axis2 1. estrarre il file axis2.war dall'archivio axis2-1.6.2-war.zip 2. copiare il file estratto in /opt/apache-tomcat-7.0.34/webapps Installare axis 2 (binary version) 1. scarichiamo l'ultima versione da qui: http://axis.apache.org/axis2/java/core/download.cgi 2. scompattare Axis2 Standard Binary Distribution in una cartella (es. /opt/axis2-1.6.2) 3. impostare la variabile nel pathname AXIS2_HOME che si riferisca alla cartella contenente la cartella espansa. In Linux è possibile avviare lo script setenv.sh contenuta in AXIS2_HOME/bin per settare la variabile d'ambiente AXIS2_HOME. 4. Aprire il file /home/miahome/.bashrc ed aggiungere le seguenti righe: AXIS2_HOME=/opt/axis2-1.6.2 export AXIS2_HOME 5. (Eseguire il server Axis2 usando il seguente comando: %AXIS2_HOME%\bin\axis2server.bat (Windows) $AXIS2_HOME/bin/axis2server.sh (Unix)) 6. Riavviare Tomcat 7. testare axis2: (nella barra degli indirizzi del browser scrivere: localhost:8080/axis2 o se ci sono problemi usare meglio l'IP della macchina al posto di localhost) appare una schermata con tre link Impostare, in .bash_profile, la variabile: export CLASSPATH=${CLASSPATH}:/opt/axis2-1.6.2/lib/* Cliccando su administration il sistema richiede l'immissione di un username e di una password che per default al primo accesso sono le seguenti: username=admin password=axis2 tali info sono contenute in chiaro nel file WEB-INF\conf\axis2.xml. Creazione di un web service 1. Creare la cartella ciaoMondo ed in essa server 2. All'interno di sever creare la cartella “META-INF” 3. All'interno di sever creare la cartella “helloWorld” che ospiterà la classe java 4. Creare la classe java HelloWorldService.java e salvarla all'interno della sottocartella helloWorld package helloWorld; public class HelloWorldService { public String sayHello(String name) { System.out.println("Hello World Service called"); return "Hello : " + name; } } L'indirizzo del package parte dalla cartella superiore escluso “server” Scrivere il file “services.xml” come segue: <service> <parameter name="ServiceClass" locked="false">helloWorld.HelloWorldService</parameter> <operation name="sayHello"> <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/> </operation> </service> e posizionarlo all'interno della sotto-cartella META-INF Nel file di configurazione elenchiamo le classi che contengono i metodi che vogliamo pubblicare. Nel nostro esempio l’unica classe è helloWorld.HelloWorldService. A ciascun metodo viene associata una classe che si occupa di gestire la risposta al client. In questo caso si è utilizzato la classe apache.axis2.rpc.receivers.RPCMessageReceiver di Axis ma è possibile scrivere anche una classe personalizzata. Compilare la classe java con il comando: $ javac HelloWorldService.java Pubblicazione del servizio per pubblicare il servizio vi sono due strade: 1. Posizionare la cartella “ciaoMondo” all'interno della cartella (è possibile mantenere solo i .class) /opt/apache-tomcat-7.0.34/webapps/axis2/WEB-INF/services Nel caso in cui non dovesse funzionare riavviare i server tomcat! 2. Creare un file zip e cambiare l'estensione in .aar contenente il contenuto di ciaoMondo ed eventualmente dando il nome di ciaoMondo.aar. Quindi posizionando il file ottenuto in /opt/apache-tomcat-7.0.34/webapps/axis2/WEB-INF/services oppure usare dall'interfaccia di amministrazione il tool upload file In alternativa allo zip si può usare il comando da linea di comando ed all'interno della cartella ciaoMondo: $ jar cvf HelloWorldService.aar * Il servizio appena pubblicato può essere testato semplicemente osservando i servizi disponibili dall'amministrazione di axis2 → System Components → Available Services. Sviluppo del client per accedere al servizio web “Hello World”. Creare una nuova directory ciaoMondo\client Aprire il terminale e posizionarsi all'interno della directory creata Generare il codice del client usando il tool “wsdl2java.bat”. Lanciare il seguente comando: sudo JAVA_HOME=/usr sh $AXIS2_HOME/bin/wsdl2java.sh -uri http://192.168.0.5:8080/axis2/services/provaWS?wsdl -p provaWS.client sudo JAVA_HOME=/usr sh $AXIS2_HOME/bin/wsdl2java.sh -uri http://192.168.0.5:8080/axis2/services/ciaoMondo?wsdl -o client (In windows: WSDL2Java.bat -uri http://localhost:8080/axis2/services/ciaoMondo?wsdl -o client) Questo, interoga partendo dal wsdl (WEB Services Description Language) genera due file java a) ciaoMondoStub.java b) ciaoMondoCallbackHandler.java dentro la cartella ciaoMondo/client/client/src/helloworld Sviluppare il codice che invoca il servizio Crerae il file Test.java nella dir ciaoMondo\client\client\src\HelloWorld. Il codice di Test.java è il segeuente: package helloworld; import helloworld.*; import helloworld.CiaoMondoStub.SayHello; public class Test { public static void main(String[] args) throws Exception { CiaoMondoStub stub = new CiaoMondoStub(); //Create the request helloworld.CiaoMondoStub.SayHello request = new helloworld.CiaoMondoStub.SayHello(); request.setArgs0("Deepak Kumar"); //Invoke the service helloworld.CiaoMondoStub.SayHelloResponse response = stub.sayHello(request); System.out.println("Response : " + response.get_return()); } } Compilare e testare il Web service Spostarsi nella cartella ciaoMondo\client\client\src e compilare il nuovo file con il comando javac ciaoMondo\client\client\src$ javac helloworld/*.java probabilmente è necessario usare l'opzione -Xlint:unchecked ovvero: ciaoMondo\client\client\src$ javac -Xlint:unchecked helloworld/*.java Fare attenzione che sia settata la variabile d'ambiente $CLASSPATH in .bash_profile (o .bashrc). In sostanza ci devono essere le due seguenti righe: export PATH=${PATH}:/opt/android-sdk-linux/tools:/usr/bin/java:/opt/axis2-1.6.2/bin export CLASSPATH=${CLASSPATH}:/opt/axis2-1.6.2/lib/* Lanciare il programma compilato con il seguente comando: ciaoMondo/client/client/src$ java helloworld/Test l'output sarà il seguente: log4j:WARN No appenders could be found for logger (org.apache.axis2.description.AxisOperation). log4j:WARN Please initialize the log4j system properly. Response : Hello : Pinco Pallino .

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    3 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us