Java permette di realizzare applicazioni Web complesse e performanti, permettendo anche agli sviluppatori di scegliere di volta in volta l'application server più adatto per i propri scopi.
Vista la potenza di questa piattaforma era inevitabile il suo "sbarco sulla nuvola", approfittando delle potenzialità della piattaforma di Cloud Computing di Windows Azure per creare applicazioni Web altamente scalabili, performanti e ad alta disponibilità.
Impostare l'ambiente di sviluppo
Assumiamo di avere già installato l'SDK di Windows Azure, contenente ad esempio alcuni strumenti di sviluppo e l'ambiente di emulazione di Windows Azure. Se non lo si è ancora installato, è possibile approfittare dell'installazione "omnicomprensiva" tramite il Web Platform Installer.
Sul sito ufficiale di Azure si può accedere al download tramite il pulsante "Installa" che riporta "Ultimo aggiornamento: novembre 2011" al momento della scrittura di questo articolo. Il pulsante avvia il download di WindowsAzureSDK.exe
che potete poi lanciare direttamente o decidere di salvare e avviare in un secondo momento.
Il Web Platform Installer 3.0 è già configurato per installare tutti e soli gli strumenti necessari, quindi possiamo scegliere subito "Installa" e lasciare che scarichi i componenti richiesti e prepari il nostro ambiente di sviluppo.
Dopo aver installato l'SDK di Windows Azure, possiamo passare a configurare il nostro ambiente di sviluppo.
Come IDE scegliamo Eclipse for Java EE Developers, a cui aggiungiamo il Windows Azure Plugin. Per farlo, avviamo Eclipse e scegliamo dal menu "Help" la voce "Install new software…"
Come sito di riferimento inseriamo l'URL:
http://dl.windowsazure.com/eclipse
quindi premiamo invio, selezioniamo tutti gli elementi trovati e scegliamo il pulsante Next.
^f(d+)$
Seguiamo il resto della procedura guidata, accettando le licenze dove richiesto, e attendiamo che Eclipse completi l'installazione del plugin per Windows Azure. Alla fine ci verrà richiesto di riavviare Eclipse.
A questo punto possiamo procedere a scoprire come creare la nostra prima applicazione di prova e portarla sulla piattaforma di Windows Azure.
Il primo servizio Cloud con Java
Realizzeremo una semplice applicazione Web stile "Hello World" con JSP su server Tomcat. Cominciamo scegliendo dal menu "File > New" la voce "Dynamic Web Project". Come nome per il progetto specifichiamo "HelloAzure", quindi clicchiamo il pulsante Finish.
A questo punto aggiungiamo una nuova pagina JSP al progetto. Dal Project Explorer espandiamo la voce del nostro progetto, e premendo con il tasto destro sulla cartella "WebContent" scegliamo la voce di menu "New JSP File". Nella finestra di dialogo, diamo alla nuova pagina il nome "index.jsp", quindi scegliamo "Finish".
All'interno del file, inseriamo la seguente riga di codice fra i tag <body>
e </body>
:
Hello Azure!
La nostra semplice applicazione Web è pronta, e non ci resta che prepararla per essere eseguita sulla piattaforma di Windows Azure.
Creiamo ora un nuovo progetto Windows Azure scegliendo dal menu "File > New" la voce "Windows Azure Project". Se non si visualizza questa voce nel menu, è sufficiente scegliere "File > New > New project…" e fra tutti i template cercare "Windows Azure Project". Specifichiamo come nome "HelloAzureCloudProject", quindi premiamo il tasto "Finish".
Adesso possiamo impacchettare la nostra applicazione Web HelloAzure in un file WAR da inserire all'interno del progetto Windows Azure. Per farlo, facciamo clic con il tasto destro sul progetto HelloAzure e scegliamo "Export > WAR file".
Come percorso di destinazione specifichiamo il seguente:
<myprojectlocation>HelloAzureCloudProjectWorkerRole1approotHelloAzure.war
in cui <myprojectlocation>
rappresenta il percorso del nostro workspace di Eclipse. Scegliamo quindi "Save".
Possiamo verificare che il file WAR sia stato generato all'interno della directory corrente andando a cercarlo all'interno del Project Explorer di Eclipse, espandendo nel progetto "HelloAzureCloudProject" il percorso "WorkerRole1/approot" (e se necessario cliccando con il tasto destro e scegliendo "Refresh"). Si nota subito che è presente anche un altro file WAR in questa directory, di nome "HelloWorld.war". Questo è normale poiché il template del Windows Azure Project in Eclipse, per default, aggiunge questo file di prova al momento della sua creazione. Possiamo quindi tranquillamente eliminarlo.
Aggiungere JDK e Tomcat per il deploy
Per garantire la massima flessibilità nella configurazione della piattaforma di runtime delle applicazioni Java su Windows Azure, è possibile scegliere la versione del JDK che si preferisce, così come il proprio Application server di riferimento. Questi componenti verranno quindi installati su Windows Azure insieme alla nostra applicazione e lanciati automaticamente dalla piattaforma.
Nel nostro esempio faremo riferimento alla JDK 7 e al Server Tomcat 7. Scarichiamo quindi da Internet i file ZIP di installazione di questi due componenti, e copiamoli all'interno del progetto HelloAzureCloudProject nella cartella "WorkerRole1/approot", insieme al file WAR generato nei passi precedenti.
Nota: è conveniente assicurarsi che la struttura dei file ZIP rispetti alcune convenzioni per evitare di dover personalizzare gli script di installazione per il deploy su Windows Azure. Nello specifico, il file ZIP contenente il JDK dovrebbe avere una cartella radice di nome "jdk" al cui interno sono presenti tutti i file necessari. Allo stesso modo, il file ZIP di Tomcat dovrebbe contenere una cartella radice con un nome che indichi nome e versione del server, nella forma "apache-tomcat-7.0.27" (non dovrebbe richiedere alcuna modifica, poichè il file ZIP scaricabile dal sito ufficiale di Tomcat si presenta già in questa forma).
A questo punto dobbiamo andare a personalizzare lo script che viene lanciato al deployment della nostra applicazione per installare e configurare la piattaforma. Il plugin di Windows Azure per Eclipse ci viene molto incontro, fornendoci nella cartella "samples" del progetto HelloAzureCloudProject alcuni esempi di script che dobbiamo solo customizzare.
Copiamo il contenuto del file "samples/startupApacheTomcat7.txt" all'interno del file startup.cmd, presente nella cartella "approot" del progetto. Il codice di questo script si aspetta che i file ZIP della piattaforma che abbiamo inserito nel progetto si chiamino rispettivamente "jdk.zip" e "tomcat7.zip"; in caso contrario, è possibile modificare questi nomi all'interno dello script in modo da corrispondere a quelli dei nostri file.
Dobbiamo fare solo due modifiche a questo script. La prima è modificare eventualmente la seguente riga (presente verso l'inizio del file):
SET SERVER_DIR_NAME=apache-tomcat-7.0.22
in modo da riflettere il nome della cartella contenente Tomcat nel file ZIP, se fosse diverso. Nel mio caso diventerà quindi:
SET SERVER_DIR_NAME=apache-tomcat-7.0.27
La seconda è modificare questa riga:
SET WAR_NAME=HelloWorld.war
in
SET WAR_NAME=HelloAzure.war
secondo il nome del file WAR contenente la nostra applicazione Web, che dovrà essere installata nel server Tomcat.
Per verificare che tutto sia stato configurato correttamente, compiliamo il progetto scegliendo il menu "Project > Build". Se la compilazione va a buon fine, l'applicazione è pronta per essere testata.
Nel prossimo articolo vedremo come è possibile testare le applicazioni Java in locale all'interno dell'emulatore di Windows Azure, e come poi è possibile in pochi minuti portare la nostra applicazione sul cloud e renderla disponibile a tutto il mondo.