Glassfish e un application server che stà riscuotendo una crescente popolarità ed è giunto ad una fase di maturità tale da farne un ottimo candidato per applicazioni professionali in campo aziendale. Glassfish è free ed open source ed è sfornato dalla Sun (casa madre di Java). La versione 2 è un container pienamente conforme alle specifiche JEE 5, questo significa in altre parole che potete deployare EJB (anche la versione 3.0), JMS, ecc. e lo distingue da servlet container come Tomcat o Jetty. Un servlet container, anche conforme alle specifice Java, come suggerisce il nome, può essere di default solo utilizzato per deployare Servlet, JSP, ecc. ma non EJB appunto perché Tomcat non è e non è pensato per essere, un EJB container. Come corollario, mentre su Glassfish potete installare tutte le applicazioni Java che girano su Tomcat, non vale il viceversa: applicazioni Java che fanno uso di tecnologie quali EJB o JMS non possono essere deployate su Tomcat. Glassfish appartiene in sostanza alla stessa famiglia di JBoss e Geronimo (progetto Apache), con cui condivide la caratteristica di essere free e open source, ma anche, sul lato commerciale, di Weblogic (Bea) e WebSphere (IBM).
Ho installato Glassfish V2 sotto un server Linux RedHat e sul mio portatile su cui gira Ubuntu 7.10. La procedura è simile ma c’è qualche piccola differenza principalmente dovuta al fatto che mentre è normale disporre di un ambinete grafico su un sistema Linux per utente finale (caso di Ubuntu installato sul portatile) questo non è normalmente il caso su un server Linux su cui spesso ci si connette da remoto e si opera attraverso una shell.
In questa prima quida prenderò in considerazione l’installazione su un server Linux (nella fattispece RedHat) dove si possono presentare anche esigenze di clustering (argomento a mio avviso non del tutto chiaro nella documentazione ufficiale). L’installazione di Glassfish sul Ubuntu 7.10 sarà lasciata ad un prossimo post.
Per installare e configurare Glassfish V2 abbiamo bisogno di un JDK5 o un JDK6 presente sul server. Accertatevi di aver installato un JDK e non un semplice JRE (per la differenza vedi qui). Potete sempre verificare la versione di Java eventualmente già installata sul server con questo comando:
java –version
Ora creiamo un nuovo user (diciamo “glassfish”):
adduser glassfish
Se sul vostro server è già installato un JDK (e se combacia con una delle due versioni di cui abbiamo bisogno per Glassfish) allora potete saltare la prossima sezione.
Come installare il JDK
Fate il download del JDK (1.6) da qui (ovviamente per Linux):
http://java.sun.com/javase/downloads/index.jsp
o del JDK (1.5) da qui
http://java.sun.com/javase/downloads/index_jdk5.jsp
copiate il file scaricato (un .bin) in una directory di vostra scelta, diciamo
/opt
spostatevi nella directory
cd /opt
ed eseguite il file per installare il JDK
./jdk-1_5_0_14-linux-i586.bin
Ora dobbiamo settare la variabile d’ambiente JAVA_HOME e modificare la variabile d’ambiente PATH per includere gli eseguibili Java che abbiamo installato con il JDK. Se vogliamo rendere disponibili questi settaggi per tutti gli utenti del sistema dovremo editare il file
/etc/profile
Se invece vogliamo rendere disponibili questi nuovi settaggi solo per l’utente glassfish dovremmo solo editare il file:
/home/glassfish/.bash_profile
in entrambi i casi le linee extra che dobbiamo aggiungere al file sono le seguenti:
JAVA_HOME=/opt/jdk1.5.0_14
PATH=$JAVA_HOME/bin:$PATH
export PATH
export JAVA_HOME
Io consiglierei di modificare i settaggi per il singolo user glassfish che sembra essere un’approccio meno intrusivo e più prudente specie su un server su cui potrebbero girare altri applicativi di cui non siamo a conoscenza. Se decidete per queasta strategia loggatevi come glassfish e procedete con questo utente da ora in poi.
Installare ANT
ANT è un prerequisito per l’installazione di Glassfish. Lo script d’installazione controllera il filesystem alla ricerca del file:
/etc/ant.conf
Che nel vostro server sarà presente solo se ci dovesse essere una versione di ANT già installata. Il file in questione, se ci date una sbirciata dentro, non fa altro che settare la fariabile di ambiente ANT_HOME (per esempio qualcosa come ANT_HOME=/usr/share/ant) che Glassfish userà durante l’installazione. Tenete presente che Glassfish richiede una versione di ANT uguale o superiore alla 6.5. Se ANT non è già installato sul vostro sistema, potete scaricarlo da qua:
http://ant.apache.org/bindownload.cgi
Scompattate il file (per esempio in /opt) e la directory che otterrete sarà la vostra ANT_HOME. Non vi rimane che creare un file /etc/ant.conf che punti alla vostra ANT_HOME. Se un’installazione di ANT è già presente sul vostro sistema ma volete usare un’altra versione di ANT senza interferire con le applicazione già installate che potrebbero usare la versione installata, potete creare il vostro file ant.conf che punti alla vostra ANT_HOME e poi editare il file
/lib/ant/bin/ant
per farlo puntare al vostro ant.conf. Il file lib/ant/bin/ant non esiste ancora a questo punto perché dobbiamo ancora installare Glassfish, cosa che faremo nella prossima sezione. Il file ant.conf, in ogni caso, assomigliarà a qualcosa tipo:
# /etc/ant.conf
# Options for classic-ant
# ANT_HOME is the directory in which the jarfiles that are required by
# classic-ant are located.
ANT_HOME=/opt/ant
Installare Glassfish
Potete scaricare una copia di Glassfish (che si presente come un file .jar) da qua:
https://glassfish.dev.java.net/downloads/v2ur1-b09d.html
Una volta scaricato il file copiatelo nella directory
/opt
Spostatevi dentro questa directory:
cd /opt
ed eseguite il seguente comando:
java -Xmx256m -jar filename.jar
dove “filename” è il nome del file che avete scaricato (per esempio glassfish-installer-v2ur1-b09d-linux.jar). Spostatevi nella directory creata:
cd glassfish
e date i permessi di esecuzione agli script ANT inclusi in Glassfish:
chmod -R +x lib/ant/bin
Ora dobbiamo decidere se vogliamo installare un singolo server o un server con supporto per il clustering. Nel primo caso eseguiamo:
lib/ant/bin/ant -f setup.xml
nel secondo invece:
lib/ant/bin/ant -f setup-cluster.xml
Tenete presente che, se scegliete la prima via, è sempre possibile aggiungere il supporto cluster dalla console di amministrazione in modo semplice ed intuitivo. Spostatevi ora nella directory bin ed eseguite:
./asadmin start-domain domain1
Per far partire Glassfish mentre per arrestarlo potete usare:
./asadmin stop-domain domain1
Ora dovreste essere in grado di amministrare Glassfish da remoto attraverso una comoda ed elegante interfaccia web semplicemente collegandovi al seguente indirizzo:
con username “admin” e password “adminadmin”. Trovate anche una nutrita documentazione (in inglese) sul sito a questo indirizzo:


Ho installato il tutto con apt (pacchetto glassfishv2) ma è sprovvisto di init script.
Mi mostreresti il tuo?
Attualmente ne uso uno che non prende “domainX” come parametro:
GLASSFISHHOME=/home/XXXXX
case “$1″ in
start)
${GLASSFISHHOME}/bin/asadmin start-domain domain1
;;
stop)
${GLASSFISHHOME}/bin/asadmin stop-domain domain1
;;
restart)
${GLASSFISHHOME}/bin/asadmin stop-domain domain1
${GLASSFISHHOME}/bin/asadmin start-domain domain1
;;
*)
echo $”usage: $0 {start|stop|restart}”
exit 1
esac
Ho risolto con questo comando:
/usr/share/glassfishv2/bin/asadmin start-domain –user admin –passwordfile /root/GF_pwd/domain1.conf domain1
Il password file è cosi’:
AS_ADMIN_PASSWORD=xxx
AS_ADMIN_USERPASSWORD=xxxx