Archivi tag: Jboss

JBoss As7.1 come servizio su Linux CentOS 6.5

Una volta installato jboss (eseguito l’untar del pacchetto, preferibilmente in /usr/share), definiamo come servizio Jboss, in modo da farlo eseguire in automatico.

Assicuriamoci di aver creato un utenza owner “jboss” (o altro nome).

Dall’installazione di jboss, accedere alla cartella init.d contenuta dentro la bin

1
[root@kiraya ~]# cd /usr/share/jboss-as-7.1.1.Final/bin/init.d/

copiare il file jboss-as.conf in una cartella jboss-as dentro etc:

1
2
3
[root@kiraya init.d]# ls
jboss-as.conf  jboss-as-standalone.sh
[root@kiraya init.d]# cp jboss-as.conf /etc/jboss-as/

Copiare il file jboss-as-standalone.sh nella cartella /etc/init.d/ rinominandolo jboss:

1
2
3
[root@kiraya init.d]# ls
jboss-as.conf  jboss-as-standalone.sh
[root@kiraya init.d]# cp jboss-as-standalone.sh /etc/init.d/jboss

Aprire ed editare il file appena copiato:

1
2
[root@kiraya init.d]# cd /etc/init.d
[root@kiraya init.d]# vi jboss

Modificare nel file la quinta linea,trasformandola da:
‘# chkconfig: – 80 20’
a
‘# chkconfig: 234 80 20’

poi aggiungere subito dopo il set della java_home, l’utente jboss:

JBOSS_USER=jboss
export JBOSS_USER

poi modificare la variabile JBOSS_CONFIG e la JBOSS_HOME impostando i nostri path di installazione e configurazione:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/bin/sh
#
# JBoss standalone control script
#
# chkconfig: 234 80 20
# description: JBoss AS Standalone
# processname: standalone
# pidfile: /var/run/jboss-as/jboss-as-standalone.pid
# config: /etc/jboss-as/jboss-as.conf

# Source function library.
. /etc/init.d/functions



# Load Java configuration.
[ -r /etc/java/java.conf ] && . /etc/java/java.conf
export JAVA_HOME

#UTENTE
JBOSS_USER=jboss
export JBOSS_USER



# Load JBoss AS init.d configuration.
if [ -z "$JBOSS_CONF" ]; then
  JBOSS_CONF="/etc/jboss-as/jboss-as.conf"
fi

[ -r "$JBOSS_CONF" ] && . "${JBOSS_CONF}"

# Set defaults.

if [ -z "$JBOSS_HOME" ]; then
  JBOSS_HOME=/usr/share/jboss-as-7.1.1.Final
fi
export JBOSS_HOME

Fatto questo, rendiamo eseguibile lo script sopra modificato e lo aggiungiamo al chkconfig per farlo eseguire in fase di boot:

1
2
3
[root@kiraya init.d]# chmod 755 jboss
[root@kiraya init.d]# chkconfig --add jboss
[root@kiraya init.d]# chkconfig --level 234 jboss on

Fatto questo possiamo far partire e fermare jboss usando i comandi :
service jboss start
service jboss stop

1
2
3
[root@kiraya init.d]# service jboss start
Starting jboss-as:                                         [  OK  ]
[root@kiraya init.d]#

JBoss As 7.1 e SL4J e Log4J

Problemi a loggare dalla nostra applicazione web, utilizzando jboss as 7.1?
Dopo diversi tentativi di gestire le risorse, il file di property , classloader e quanto altro, l’unica soluzione che ho trovato è la seguente.
Jboss utilizza e configura in fase di startup log4j e quindi tutti i nostri messaggi sono intercettati e gestiti dalla sua configurazione. Per bloccare questo comportamento dobbiamo usare le jboss-deployment-structure, ovvero mettere delle direttive nel nostro ear o nel nostro war, tramite file di configurazione, per indicare di escludere i moduli di jboss inerenti il logging, sull’applicazione che stiamo deployando.
Questo sistema evita che jboss in automatico inietti le dipendenze e le responsabilità del logging dei suoi moduli di logging.
il seguente file va messo nella meta-inf dell’Ear o del War.
il seguente esempio è riferito al deploy di un ear, con un war al suo interno.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
   <deployment>
     <exclusions>
       <module name="org.apache.log4j" />
       <module name="org.slf4j"/>
     </exclusions>
   </deployment>
   <sub-deployment name="miaappweb.war">
     <exclusions>
       <module name="org.apache.log4j" />
       <module name="org.slf4j"/>
     </exclusions>
   </sub-deployment>
</jboss-deployment-structure>

Spero sia chiaro.

Aggiunta per Spring:
se si utilizza anche Spring Framework, allora nella lista delle esclusioni va aggiunta anche la librera delle Commons logging, in quanto spring utilizza l’astrazione di Apache per la gestione del logging interno.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
   <deployment>
     <exclusions>
       <module name="org.apache.log4j" />
       <module name="org.slf4j"/>
       <module name="org.apache.commons.logging"/>
     </exclusions>
   </deployment>
   <sub-deployment name="miaappweb.war">
     <exclusions>
       <module name="org.apache.log4j" />
       <module name="org.slf4j"/>
       <module name="org.apache.commons.logging"/>
     </exclusions>
   </sub-deployment>
</jboss-deployment-structure>