mercoledì 13 agosto 2008

JBoss

Finora ho fatto il deploy degli applicativi di Matica su una installazione di Tomcat 6.0, ma recentemente cominciano a sorgere delle necessità che con Tomcat non sono proprio banali da risolvere, come, ad esempio, quella di utilizzare delle code JMS. In questo caso avrei dovuto installare un gestore JMS esterno, configurarlo ecc... Allora mi sono detto: perchè non proviamo con JBoss che invece questi servizi ce li ha già?
Non avevo mai usato JBoss perciò ho cominciato a provare e ho avuto qualche problemino già in fase di startup. Niente di insormontabile, ovviamente. Ecco cosa è successo.

Innanzitutto ho provato a seguire il manuale:
- ho scompattato il pacchetto di JBoss 4.2.3GA in /opt/jboss
- ho impostato nel mio .bashrc le variabili JAVA_HOME e JBOSS_HOME rispettivamente alle directory che contengono l'installazione della JVM e di JBoss
- ho lanciato lo script di startup con /opt/jboss/bin/run.sh

E lo script è andato in errore! Forse il mio utente non ha abbastanza privilegi, proviamo con sudo:

sudo -E /opt/jboss/bin/run.sh

Stavolta funziona! Ho dovuto usare l'opzione -E di sudo per fare in modo che le variabili d'ambiente che avevo impostato nel mio .bashrc fossero mantenute anche nella shell che lancia JBoss.

Ho provato a connettermi alla pagina di benvenuto di JBoss prima da un browser sulla stessa macchina, poi da uno su un'altra macchina (virtuale, poichè al momento ho un solo PC). La cosa strana è che funziona solamente da localhost. Se provo ad usare l'indirizzo della macchina, sia da loacle che da remoto, JBoss non risponde.

Ho cercato un po' in rete e ho scoperto che dalla 4.2 in poi JBoss si mette in ascolto solamente sull'indirizzo 127.0.0.1 (per gli amici "localhost") mentre per metterlo in ascolto su un altro indirizzo occorre usare il parametro -b , ad esempio:

sudo -E /opt/jboss/bin/run.sh -b 192.168.0.165

Così però non funziona più se lo chiamo da localhost. Se si vuole farlo funzionare in ogni caso basta usare -b 0.0.0.0

Nel cercare questa informazione ho scoperto anche la pagina del wiki di JBoss dove sono elencate le opzioni dello script di startup:

http://wiki.jboss.org/wiki/JBossRunParameters

e che nella stessa directory dello script c'è un file, chiamato run.conf, che permette, sotto unix/linux/ecc. , di impostare le variabili d'ambiente.
Perciò ho spostato la definizione della JAVA_HOME dal mio .bashrc a run.conf e ora posso lanciare il tutto senza l'opzione -E di sudo. Riassumendo:

sudo /opt/jboss/bin/run.sh -b 0.0.0.0

Ora sarebbe carino riuscire a lanciarlo come servizio! Ma questa è un'altra storia