Redatto da: Dr. ing. Candido Fracassi Dr ing. Francesco Brindisi Dr ing. Luciano Corelli Rivisto da: Ing. Danilo Spada Porting Su Hostingjava Consigli per il caricamento di una propria applicazione su hostingjava Il porting è una operazione con cui un programma, sviluppato originariamente per una piattaforma , viene"ritoccato" nel suo codice sorgente in modo da poter essere utilizzato in un'altra piattaforma. L'operazione solitamente non è banale, soprattutto se il porting avviene tra piattaforme molto differenti a livello architetturale. Esistono, comunque, delle linee guida tramite le quali è possibile scrivere programmi facilmente "portabili". Talvolta il porting può anche essere impossibile, il più delle volte per il fatto che il programma fa delle assunzioni particolari sulla piattaforma in cui deve essere eseguito (ad esempio, utilizza un particolare componente hardware non presente in nessun'altra piattaforma). Utilizzando il linguaggio Java, in effetti, non si incontrano grossi problemi di porting ed usando dei piccoli accorgimenti in fase di sviluppo l’applicazione funzionerà subito anche quando trasferita su una piattaforma diversa da quella su cui è stata sviluppata. Ma tra il dire e il fare c’è di mezzo il mare recita un adagio e questa operazione va comunque eseguita seguendo criteri opportuni. Per esempio è opportuno definire i path all’interno del proprio codice utilizzando il campo File.separator della classe File invece del consueto forward o backward slash. Nel nostro caso si ipotizza di voler trasferire un’applicazione sviluppata in locale usando una certa versione di Tomcat ed un sistema operativo (probabilmente Microsoft) su un server su cui gira Linux Fedora e la cui versione di Tomcat è la 5.5.7. A parte accorgimenti particolari che si dovranno tenere se si vogliono gestire uploads nella propria applicazione comunque, il più delle volte basterà riconfigurare opportunamente i parametri di connessione al database. 1 Redatto da: Dr. ing. Candido Fracassi Dr ing. Francesco Brindisi Dr ing. Luciano Corelli Rivisto da: Ing. Danilo Spada Accorgimenti per applicazioni che usano l’Upload Gli accorgimenti che si dovranno tenere in fase di sviluppo per le applicazioni che gestiscono l’upload do files derivano dal fatto che quando si arresta e si riavvia un’applicazione su hostingjava, questa viene sempre ricaricata su una nuova directory temporanea. Tale directory temporanea sarà quella effettiva di lavoro, ma il suo contenuto andrà perduto ogni volta che si riavvia l’applicazione. Se si vogliono uploadare dei files ed averli disponibili sia subito che dopo il riavvio dell’applicazione, si dovrà quindi gestire tale dualità effettuando le varie operazioni su ambo le directory in contemporanea, come se una fosse, per così dire, di backup. Tali directories sono indicate rispettivamente come PERCORSO FISICO e PERCORSO ANTILOCKIN nell’interfaccia di amministrazione. Quest’ultima, che come detto varia ogni volta, può essere acceduta dall’interno dell’applicazione mediante il metodo getRealPath(nomeCartella), per esempio getRealPath(WEB-INF). Procedure da eseguire per creare un dominio: Si apre il web browser e si accede ad www.hostingjava.it 2 Redatto da: Dr. ing. Candido Fracassi Dr ing. Francesco Brindisi Dr ing. Luciano Corelli Rivisto da: Ing. Danilo Spada qui si procede alla propria registrazione, scegliendo username e password ed inserendo un’email di riferimento nella finestra di seguito riportata. 3 Redatto da: Dr. ing. Candido Fracassi Dr ing. Francesco Brindisi Dr ing. Luciano Corelli Rivisto da: Ing. Danilo Spada N.B. Si noti che lo username è quello che verrà utilizzato per dare il nome al proprio contesto. Una volta che la registrazione è stata effettuata si può effettuare il login ed accedere all’interfaccia di amministrazione. Caricamento della propria applicazione: Per uploadare la propria applicazione, si consiglia di utilizzare un client ftp, poiché se ci sono sessioni attive, si potrebbero verificare dei problemi durante il caricamento. Disponendo di un client ftp, la connessione al server avviene impostando l’url di connessione, username e password; ad esempio: se la nostra username di registrazione fosse club8 allora l’ url di connessione sarebbe ftp:\\[email protected]. In alternativa si può accedere ftp utilizzando il proprio browser, cliccando sul link ftp://www.hostingjava.it/ dalla propria interfaccia di amministrazione (dopo essersi loggati). Se si usa Internet Explorer è opportuno deflaggare tra le opzioni avanzate del browser, l’opzione “usa ftp passivo”. 4 Redatto da: Dr. ing. Candido Fracassi Dr ing. Francesco Brindisi Dr ing. Luciano Corelli Rivisto da: Ing. Danilo Spada Una volta stabilita la connessione ftp è sufficiente fare una copia della propria applicazione direttamente sul server: 5 Redatto da: Dr. ing. Candido Fracassi Dr ing. Francesco Brindisi Dr ing. Luciano Corelli Rivisto da: Ing. Danilo Spada Terminata la procedura si dovrà avviare l’applicazione (start) (e lanciare la servlet che costruisce il database se si usa MySql, come spiegato più avanti)..se tutto va bene, la nostra applicazione è pronta a funzionare! Per le successive modifiche bisognerà effettuare il riavvio (stop – start) o semplicemente il reload dell’applicazione, a seconda dei casi. Il reload andrà bene se si aggiornano le classi dell’applicazione, mentre se si modifica, per esempio il file web.xml, bisognerà riavviare. Amministrazione della propria applicazione: Una volta loggati si apre una schermata tipo questa: 6 Redatto da: Dr. ing. Candido Fracassi Dr ing. Francesco Brindisi Dr ing. Luciano Corelli Rivisto da: Ing. Danilo Spada 7 Redatto da: Dr. ing. Candido Fracassi Dr ing. Francesco Brindisi Dr ing. Luciano Corelli Rivisto da: Ing. Danilo Spada Si può notare la presenza di informazioni relative al nome del contesto, i percorsi utilizzati dal server per l’esecuzione dell’applicazione, informazioni sui driver dei data base e sui relativi url da utilizzare all’interno della propria applicazione. Si hanno inoltre a disposizione le funzionalità di arresto, avvio e reload dell’applicazione, nonché la possibilità di controllare il file di log della stessa (log tomcat). HSQLDB Per quanto riguarda l’uso del database HSQLDB nella propria applicazione, si tenga presente il fatto che su hostingjava funziona in modalità standalone, quindi il database supporta una connessione per volta (si veda a tal proposito il topic DataBase&HostingJAva sul forum). Si consiglia allora di utilizzare, per gestire la connessione, il pattern Singleton (si veda a tal proposito il documento SingletonPattern all’url http://www.hostingjava.it/-Impiegato/documentazione). Dato inoltre che il driver per questo RDBMS non è presente nel container bisogna inserire il file hsqldb.jar all’interno della carella lib della propria applicazione. Si consideri infine che è possibile preparae in locale i file che rappresentano il database (i tre files con estensioni: log, properties e script) e caricarli sul server hostingjava. Si tenga bene a mente però il fatto che, qualora si facessero errori nel settaggio dell’url all’interno della nostra applicazione (per esempio dando un path errato), HSQLDB costruirebbe un altro database con lo stesso nome, ma nella posizione indicata erroneamente (diversa da quella in cui si è caricato quello preparato in locale). Questo errore, abbastanza difficile da individuare, si manifesta con l’impossibilità di accedere alle tabelle cercate. Quindi non si verificano problemi di connessione (perché il database a cui 8 Redatto da: Dr. ing. Candido Fracassi Dr ing. Francesco Brindisi Dr ing. Luciano Corelli Rivisto da: Ing. Danilo Spada connettersi viene creato al volo!) ma naturalmente dentro di esso non ci saranno ne le tabelle ne i dati attesi; il fatto che NON si verifichino problemi di connessione, ma di accesso alle tabelle rende difficile l’individuazione dell’errore. Si dovrà quindi posizionare il database all’interno della propria applicazione (dentro WEB_INF/db per esempio) e puntarlo con estrema attenzione, usando nell’url il percorso fisico specificato all’interno dell’interfaccia di amministrazione (che per es sarà: /HOME/HOSTINGJAVA.IT/IMPIEGATO ) In questo caso quindi l’url di connessione sarà: “jdbc:hsqldb:file:/HOME/HOSTINGJAVA.IT/IMPIEGATO/WEB-INF/DB/NOMESCELTOPERILDB”. L’ultima cosa da tener presente quando si usa HSQLDB è che ogni volta che si riavvia l’applicazione si dovrà rimuovere a mano il file con estensione lck dalla cartella in cui si è posizionato il db. MySql Per quanto riguarda l’uso del database MySql, questo viene gestito mediante datasource (quindi con un connection pool di cui si occupa il container di tomcat) ed i drivers sono già disponibili (si veda a tal proposito il documento http://www.hostingjava.it/-Impiegato/documentazione). L’utilizzo DataSource dello stesso all’url risulta perciò estremamente semplice ed efficiente. Basterà utilizzare all’interno delle proprie servlet le istruzioni: javax.sql.DataSource ds= (javax.sql.DataSource) new javax.naming.InitialContext().lookup("java:comp/env/jdbc/impiegato"); Connection conn=ds.getConnection(); per acquisire una connessione al database e l’istruzione: conn.close(); per rilasciarla dopo averla usata. N.B. 9 Redatto da: Dr. ing. Candido Fracassi Dr ing. Francesco Brindisi Dr ing. Luciano Corelli Rivisto da: Ing. Danilo Spada Se si utilizza MySql, bisogna costruire le tabelle ed eseguire il popolamento iniziale del database mediante servlet. Questo perché sono chiuse le porte di comunicazione con MySql e quindi tale operazione non può essere eseguita accedendo mediante un client MySql. Indice: Porting Su Hostingjava.........................................................................................................................1 Consigli per il caricamento di una propria applicazione su hostingjava.......................................... 1 Accorgimenti per applicazioni che usano l’Upload......................................................................... 2 Procedure da eseguire per creare un dominio:................................................................................. 2 Caricamento della propria applicazione:.............................................................................................. 4 Amministrazione della propria applicazione:...................................................................................6 HSQLDB.......................................................................................................................................... 8 MySql............................................................................................................................................... 9 Indice:............................................................................................................................................. 10 10