Una tipologia di software che sta prendendo sempre più piede, è quella dei web services. In questi casi c’è una parte client (richiedente) che richiede delle informazioni ad una parte server (erogatore).

Vediamo, in questa guida, come utilizzare il protocollo SOAP in Java su Linux usando Apache Tomcat (istruzioni per le distribuzioni basate su Debian).

0 – Premessa

Supponiamo di indicare con:

  • $ il prompt dell’utente;
  • # il prompt di root.

Inoltre indichiamo con Debian, tutte le distribuzioni basate su Debian, come Ubuntu, ecc.

1 – Installazione del Java

Dovete aver installato la versione non-free del Java, ossia quello sviluppato dalla Sun. Per verificare l’esatta versione del Java, è necessario lanciare questo comando (java interprete e javac compilatore):

$ java -version
java version "1.6.0_03"

$ javac -version
javac 1.6.0_03

Se non avete questo output, o dovete installare la versione Sun del Java, oppure non avete sistemato bene il link simbolico del Java. Con Debian è possibile sistemare correttamente la versione del java con questo comando:

# update-alternatives --config java

# update-alternatives --config javac

Nel prompt, dovete settare la versione Sun. Se non avete il java, allora scaricarelo:

# apt-get install sun-java6-jdk

2 – Installazione del Tomcat

Veniamo ora alla parte più complicata. Dal vostro gestore dei pacchetti, scaricate il Tomcat. Bisogna scaricare alcuni pacchetti:

# apt-get install tomcat5.5 tomcat5.5-admin tomcat5.5-webapps

Dopo aver scaricato e installato il tutto, aprite Firefox (o il vostro browser preferito) e andate al seguente URL:

http://localhost:8180


Dovrebbe apparire una pagina simile a questa:

Free Image Hosting at www.ImageShack.us

Ora, dovete scaricare packagestargz.odt (da rinominare packages.tar.gz) contenente alcuni tools per riuscire a configurare correttamente il SOAP. Una volta scaricato:

$ mv packagestargz.odt packages.tar.gz

e poi lo estraete con:

$ tar xvf package.tar.gz

Il passo successivo, è quello di copiare le librerie che permettono di far girare il SOAP all’interno di Tomcat.

# cd package
# chmod a+w *.jar
# cp *.jar /usr/share/tomcat5.5/common/lib

Adesso provate questo comando:

# ls /usr/share/tomcat5.5/webapps

Non dovrebbe restituire niente. Allora copiamo un semplice file, e magicamente si avrà:

# cp soap.war /usr/share/tomcat5.5/webapps
# ls /usr/share/tomcat5.5/webapps
soap soap.war

Abbiamo copiato un solo file ma abbiamo in realtà anche una directory! Il soap sta prendendo forma.

Mancano pochi passaggi e poi il Tomcat sarà perfettamente configurato. Bisogna cambiare la porta del servizio, facendola passare da 8180 a 8080. Aprite con un editor il file:

/usr/share/tomcat5.5/conf/server.xml

e cercate una cosa del genere:

<Connector port=”8180” maxHttpHeaderSize=”8192″

e sostituitelo con:

<Connector port=”8080” maxHttpHeaderSize=”8192″

Infine, dovete aprire il file:

/etc/default/tomcat5.5

e sostituire:

#TOMCAT5_SECURITY=yes

con (occhio che dovete togliere il #):

TOMCAT5_SECURITY=no

3 – Configurare le variabili d’Ambiente

Dato che il Tomcat è pienamente configurato, ora mancano alcune finezze per arrivare allo scopo prefissato in partenza.

Dovete modificare il vostro file di login situato nella vostra home ~/.bashrc settando (o aggiungendo) due variabili: JAVA_HOME e CLASSPATH. Il file avrà una forma simile a questa:


JAVA_HOME=/usr/lib/jvm/java-6-sun
export JAVA_HOME

CLASSPATH=:.:/usr/share/tomcat5.5/common/lib/activation.jar:/usr/share/tomcat5.5/common/lib/mail.jar:/usr/share/tomcat5.5/common/lib/soap.jar:/usr/share/tomcat5.5/common/lib/xercesImpl.jar:/usr/share/tomcat5.5/common/lib/xml-apis.jar
export CLASSPATH

dove i puntini indicano altra roba presente nel file, ma che in questo contesto non ci serve.

Nota: la definizione del CLASSPATH deve essere tutta attaccata (la riga è lunga e va oltre la lunghezza del tema di wordpress :( )

4 – Esecuzione del Tomcat

Dato che ora è tutto OK, dobbiamo prima di tutto far assimilare le variabili appena create all’utente, così:

$ . ~/.bashrc

Se vi da errore, tornate al punto precedente, forse avete configurato male le variabili. Se invece è tutto liscio, testate le variabili in questo modo:

$ echo $CLASSPATH

$ echo $JAVA_HOME

Dopo ogni echo avrete l’output di prima. Infine, riavviamo il Tomcat:

# /etc/init.d/tomcat5.5 restart

Adesso, provate a piazzarvi con Firefox su:

http://localhost:8080/soap/admin

Se vedete una cosa simile a:

Free Image Hosting at www.ImageShack.us

complimenti, il Tomcat e SOAP sono configurati correttamente!

5 – Testare il tutto con un esempio

Prima di tutto ci spostiamo nella directory test, con:

$ cd test

Adesso ci occupiamo del server, e quindi della sua compilazione:

$ javac MyCalculator.java

Ora bisogna portare il .class generato, nella directory che esporta il servizio, ossia questa operazione:

# cp MyCalculator.class /usr/share/tomcat5.5/webapps/soap/WEB-INF/classes

Arrivati qua, ci manca solo la pubblicazione del servizio, che la si fa così:

# ./deploy.sh

Finalmente, possiamo testare il nostro esempio. Il server è una calcolatrice che vuole 2 numeri e restituisce la loro somma. Compiliamo il client ed eseguiamolo:

$ javac SimpleSOAPClient.java
$ java SimpleSOAPClient 1 2
Result is 3

Il risultato è 3, e questo significa che il SOAP ha funzionato alla perfezione!