Guida alla sopravvivenza di Saed

Salve a tutti! Quest'articolo è una piccola guida per sopravvivere a Tomcat, Axis,Saponetta e quant'altro. Nella prima parte verrà spiegato come configurare i programmi che ci serviranno per far funzionare il progetto mentre la seconda parte spiegherà un po' come usare Saponetta. Pronti? No? Bene iniziamo!

Configurazione di Tomcat,Axis e Saponetta

Prima di tutto dovete creare una cartella che rappresenterà il vostro progetto, noi la chiameremo “mioprogetto”. Dopodichè scaricate Saponetta dal nostro bel sito e scompattatelo all'interno della vostra cartella “mioprogetto”.

Scarica Saponetta

Saponetta è il magico script batch che vi consentirà di far funzionare Axis e Soap in Java su Windows senza farvi venire l'ulcera!

Adesso dovete modificare il file chiamato “saponetta.bat”, se avete fatto come indicato il file si dovrebbe trovare all'interno del path “mioprogetto/saponetta/saponetta.bat”, per modificare il file apritelo con un editor di testo.

La modifica consiste semplicemente nel modificare il path dei vostri file binari della jdk dove la riga inizia con “Set JAVAPATH”, per esempio in Windows 7 o Vista (64 bit) il percorso potrebbe essere “set JAVAPATH=C:\Program Files (x86)\Java\jdk1.6.0_17\bin” .

Bene, stiamo facendo (ahah) progressi, il prossimo passo consisterà nello scaricare Axis, lo potete scaricare da qui, una volta fatto scompattatelo e rinominate la cartella “axis-numversione” in “axis”, dopodichè inserite quest'ultima nella vostra cartella “mioprogetto”.

Ottimo, adesso possiamo passare a Tomcat; scaricatelo pure da qui e ripetiamo tutti passaggi fatti prima con Axis: scompattatelo e rinominate la cartella “tomcat-numversione” in “tomcat” dopodichè ficcate anche questa cartella in “mioprogetto”.

Notate che i link proposti si riferiscono a due particolari versioni di axis che sono già datate al momento della stesura di questo articolo, ma si tratta delle versioni con cui Saponetta è stato realizzato e testato. Potete provare a ripetere queste procedure con le versioni più aggiornate di questi programmi, ma poi dovrete divertirvi a risolvere i guai per conto vostro, se le cose non dovessero andare per il verso giusto.

Bene, se la cosa vi fa felice abbiamo finito con gli scaricamenti e gli scompattamenti.

Adesso copiate la vostra cartella "mioprogetto/axis/webapps/axis" in "mioprogetto/Tomcat/webapps" mi raccomando occhio a non sbagliarvi qua! Visto che ci siamo, copiate tutte le librerie che stanno in "mioprogetto/axis/lib" in "mioprogetto/Saponetta/lib", altrimenti Saponetta si arrabbierà parecchio perchè non sarà in grado di trovarle. Ci siamo quasi, è necessaria solo qualche modifica al file “myboot.bat” , potete trovare questo file qui sotto.

Scarica MyBoot.bat

MyBoot.bat è il magico script batch che setta tutte le variabili d'ambiente necessarie per far funzionare Tomcat ed Axis. Davvero!

Come per Saponetta.bat , apritelo con un editor di testo per effettuare la modifica e modificate anche qui il path dei vostri file binari della jdk (anche qui si trova all'inizio del documento). Perfetto! Ora Tomcat dovrebbe (sottolineo dovrebbe) funzionare, per verificarlo aprite il file myboot.bat con un doppio clic, dovrebbe aprirsi il prompt dei comandi e dovrebbero scorrere delle scritte terminate da "INFO: Server startup in [...]". Non chiudete questa finestra: finchè la manterrete aperta Tomcat resterà in esecuzione.

Per verificare il corretto funzionamento di tutto puntate il vostro browser all'indirizzo http://localhost:8080/axis/ . Se tutto va bene vi accoglierà una sensazionale pagina web bianca con le scritte nere: vuol dire che Axis funziona correttamente, in caso di errori ricontrollate i passi precedenti (eh lo so è dura).

Guida a Saponetta

[a mensa] Rangemaster : “A che serve la saponetta?”

RemovedQuasar: “A lavatte!”

La seconda parte dell'articolo è una piccola guida a Saponetta. Questo simpatico programmino vi permetterà di effetuare il deploy dei vostri WebServices attraverso alcuni “semplici” passaggi.

Introduzione: come funziona Saponetta?

Saponetta è un file in formato bat che al suo avvio aprirà una finestra del prompt dei comandi, da qui potrete scegliere i vari passaggi guidati da compiere oppure potrete accedere alla sezione “aiuto” che è una sorta di riassunto di questa guida. Ovviamente parto dal presupposto che l'abbiate configurata correttamente, in caso contrario troverete un sacco di bei errori ad attendervi. Nella directory di Saponetta si trovano due cartelle chiamate “input” ed “output”, come è facilmente intuibile nella prima andranno inseriti i file richiesti dai passaggi mentre nella seconda ci saranno i file risultanti alla fine di ciascun passaggio. Per un corretto funzionamento di Saponetta si consiglia di lasciare la cartella “output” sempre vuota. Da questo punto in poi considereremo NetBeans come IDE utilizzato per lo sviluppo del codice, se preferite utilizzare un altro strumento, dovrete adattare i passi al vostro caso.

1) Creazione del file WSDL

Axis permette di creare automaticamente tutte le classi necessarie per il client e per il server di un webservice a partire da un singolo file WSDL. E' possibile scrivere a mano questo file (trattasi di un documento XML), oppure si può, sempre attraverso Axis, generare questo file a partire da un file di classe. Dunque, per prima cosa dovete iniziare a lavorare sul vostro progetto e dichiarare una classe che avrà la funzione di server (piccolo consiglio: evitate di inserire la parola “service” nel nome della classe poiché il suffisso “service” verrà inserito automaticamente nella fase 2 di Creazione delle Classi e potrebbe venir fuori qualcosa di mostruoso come “myServiceServiceQualcosa” e non è molto piacevole. Una volta creata la classe server, inserite all'interno di quest'ultima tutti i metodi che serviranno al vostro server, senza pensare minimamente al fatto che questi metodi verranno richiamati via rete. Si consiglia di scrivere ora l 'implementazione dei metodi e testarla sufficientemente prima di passare oltre. Ok, adesso create un'interfaccia che rispecchi i soli metodi della classe server che volete rendere pubblici. Ora non resta che compilare il vostro progetto, (su NetBeans basta cliccare su “BuildProject”) per ottenere un file jar di cui avrà bisogno Saponetta. Prendete il file in questione dalla directory “dist” del vostro progetto NetBeans e spostatelo (o copiatelo) nella cartella “input” all'interno di Saponetta per iniziare la creazione del file WSDL. Una volta inserito il file, aprite “Saponetta.bat” e andate al passaggio 1. Seguite le indicazioni per creare il vostro file Wsdl che comparirà nella cartella “output” ovviamente sempre all'interno di Saponetta. Una volta pronto il file possiamo passare alla fase 2.

Informazioni utili!

E' vero che vi ho appena detto che potete dimenticarvi del fatto che i metodi del server devono essere richiamati tramite rete, ma c'è una cosa che dovete tenere a mente: potete restiture (tramite SOAP) solo tipi di dato semplici (interi, double, stringhe) oppure array di tipi semplici oppure ancora oggetti serializzabili. Questo significa che se un certo metodo dovrà restituire una collezione di dati diversi, collegati tra loro (ad esempio degli interi ed una stringa) dovrete dichiarare una classe con il solo scopo di contenere questi dati, e se la vostra classe sarà un JavaBean potrete restituirla dai vostri metodi. Un JavaBean (per quel che riguarda i nostri scopi) è una classe fatta così:

  • Deve avere un costruttore senza argomenti,
  • Le proprietà della classe devono essere private,
  • L’accesso alle proprietà della classe deve avvenire solo tramite particolari metodi getter e setter,
  • Non dovrebbe contenere metodi per la gestione degli eventi,
  • Dovrebbe essere serializzabile.

2) Creazione delle classi

Queste classi saranno in grado di facilitare il vostro lavoro facendosi carico di tutta la comunicazione client-server e del marshalling e unmarshalling di tutti i parametri e dei valori di ritorno dei metodi che avete dichiarato nella classe server. Per questo passaggio è necessario il file WSDL che avete generato al primo passaggio quindi spostatelo dalla cartella “output” a quella “input” (si ringrazia il Tenente Certezza per questo importante contributo). Dopodichè avviate il passo 2 di Saponetta, seguite le istruzioni e creerete così le vostre classi, insieme a quest'ultime verranno generati anche i file “deploy” e “undeploy” che vi serviranno più tardi. Ora, prima di passare al passo 3 ci sono due cose moolto ma molto importanti che dovrete fare:

  • Copiare il file che rappresenta la classe Server dal vostro progetto NetBeans (che si troverà in “src/ClasseServer”) nella cartella dove si trovano le classi appena create.
  • Modificare il file “qualcosaSoapBindingImp.java”, aprendolo vedrete che il file contiene le dichiarazioni di metodi che avete specificato al passo 1 di Saponetta: è arrivato il momento di riempire i metodi con la loro effettiva implementazione.

Caso 1)

Se avete utilizzato l'interfaccia, a questo punto vi conviene istanziare un oggetto della vostra classe server (quella di cui avete scritto l'interfaccia per intenderci), ed utilizzare quello per rispondere ai metodi. Ecco un esempio con un fantomatico metodo “callMedic” che prende un int come input:

package net.duricomeilmetallo.mioPackage;

public class mioServerSoapBindingImpl {

    public int callMedic(int a) throws java.rmi.RemoteException {

        mioServer serv=new mioServer();
        return mioServer.callMedic(a);
   }
}

Caso 2)

Se non avete utilizzato l'interfaccia, potete direttamente inserire il corpo dei metodi del server che avete scritto in precedenza all'interno di quest'ultimi. Questa soluzione è sconsigliata ma pare funzionare (pare).

3) Compilare le classi

il terzo passo è relativamente semplice, si tratta di compilare le classi che avete creato in precedenza. Spostate quindi la cartella più esterna che contiene quest'ultime da “output” ad “input” ed avviate la compilazione, ovviamente sempre con Saponetta. Nella cartella “output” compariranno le classi compilate all'interno di una cartella che sarà omonima a quella in “input” dove ci sono le classi NON compilate. Per evitare di confondervi, dopo la compilazione, vi consiglio di rinominare la cartella contenente le classi non compilate. Un esempio è “classi nc” (dove nc sta per "non compilate").

Se dopo tutto sto ambaradan la vostra domanda è: “Perchè mi tengo ancora la cartella con le classi non compilate?” La risposta è : perchè la cartella contiene i file “deploy” e “undeploy” che vi serviranno ancora per passaggi successivi ma sopratutto perchè, in caso di errori di programmazione sul codice della classe server, dovrete rifare tutto quanto e quindi anche modificare il file “qualcosaSoapBindingImp.java” (passaggio 2) anch'esso contenuto nella cartella delle classi quindi tenerselo può essere comodo per evitare di riscriversi tutte le implementazioni dei metodi.

4) Creazione del file jar

il quarto passo servirà per creare il'archivio jar delle classi a partire da quelle che avete appena compilato. Mettete dentro “input” la cartella contenente le classi compilate (ricordatevi di nuovo di prendere quella più esterna, nel caso ne vengano create più di una) ed avviate la procedura con Saponetta, il risultato sarà il vostro bel file jar in “output”. Il jar andrà allegato al client del vostro progetto come una libreria; lavorando con NetBeans sarà possibile aggiungere il file jar come libreria attraverso la funzione “Add Libraries” a cui si accede cliccando con il tasto destro sul vostro progetto nel pannello “Projects” (per default si trova a sinistra). Questo vi permetterà di richiamare i metodi degli oggetti creati da axis.

Piccola nota: se il file jar viene spostato, se la cartella dove si trova viene rinominata ed ovviamente se il file viene eliminato o fatto a pezzi, il vostro progetto non riuscirà più a leggere i suoi oggetti quindi attenzione (comunque sia basterà aggiungerlo di nuovo come libreria al progetto).

5) Deploy/Undeploy

con questo passo finalmente faremo il deployement (ed eventuale undeployement) dei vostri webservices. Per poter effettuare sia il deploy che l'undeploy Tomcat dev'essere configurato ed attivo. Prima di attivare Tomcat però, copiate il vostro file jar, ottenuto dal passo precedente, nella cartella “mioprogetto\tomcat\webbaps\axis\web-inf\lib” . Ora avviate Tomcat tramite il file “myboot.bat”, non chiudete la solita schermata del prompt e continuiamo. Adesso aprite la cartella contenenente le vostri classi non compilate (vi avevo suggerito di chiamarla “classi nc”) e prelevate i due file “deploy” ed “undeploy” copiandoli dentro ad “input”. Perfetto, ora tenendo sempre Tomcat aperto, effettuate il deploy attraverso Saponetta, procedura abbastanza semplice. Ricordatevi di riavviare Tomcat appena terminato il deploy, Per verificare il corretto funzionamento di tutto, aprite il browser e digitate http://localhost:8080/axis/services sulla barra degli indirizzi: dovreste visualizzare sulla pagina i metodi che avete implementato sulla classe server e che avete reso pubblici tramite Saponetta (se non è questo il caso, tentate con un secondo deployment prima di suicidarvi, a volte uno solo non basta a convincerlo...). Per rimuovere quest'ultimi ci sono due metodi: eseguire l'Undeployement sempre attraverso Saponetta (procedura analoga al Deploy) oppure con un modo molto più semplice: chiudete Tomcat e rimuovete il vostro file Jar dalla cartella “mioprogetto\tomcat\webbaps\axis\web-inf\lib” , riavviate Tomcat ed andate sempre su http://localhost:8080/axis/services per confermare la rimozione dei webservices.

Bene (insomma) direi che si conclude qui la nostra guida alla sopravvivenza a Tomcat, Axis e quant'altro, grazie per aver letto tutto con (ahah) interesse, se ci fossero problemi non esitate a risolverli.

Questa simpatica guida è stata realizzata basandosi sugli antichi scritti di Darkmawi e sulla guida di Luigi a Saponetta.

A proposito dell'autore
removedquasar • RemovedQuasar ha sempre pronta la battuta che non ti aspetteresti. Ha un'ampia cultura in ambito di fumetti, e spiccate capacità con qualunque videogioco; capacità che sfrutta nelle innumerevoli sfide contro Frizzo. Tiene molto al suo aspetto fisico, come dimostra la ventola del suo HP spesso usata come phon.
Altro