Instalar JBoss como servicio en Solaris

Existe en Solaris una forma de configurar un servicio a través de generar un script y crear un archivo XML para la configuracion del servicio.

Encontre en este sitio una explicación de los servicios y del comportamiento de los servicios. En el esta explicado como hacerlo para JBoss 5.x, pero en mi caso tuve que hacer modificaciones para JBoss 4.2.3.GA.

Primero crea un script llamado jboss

#!/sbin/sh

. /lib/svc/share/smf_include.sh

getproparg() {
	val=`svcprop -p ${1} ${SMF_FMRI}`
	[ -n "$val" ] && echo $val
}

if [ -z ${SMF_FMRI} ]; then
	echo "SMF framework variables are not initialized."
	exit ${SMF_EXIT_ERR}
fi

METHOD=${1}	# %m	(start/stop)
INSTANCE=${2}	# %i	(instance name)

# read other properties...
JBOSS_USER=root
JBOSS_HOME=/usr/local/jboss-4.2.3.GA
JBOSS_HOST=`getproparg instance/host`
JBOSS_PROFILE=${INSTANCE}
JBOSS_PARTITION=`getproparg instance/partition`
JBOSS_UDP_ADDRESS=`getproparg instance/udp_address`
JBOSS_UDP_PORT=`getproparg instance/udp_port`
JBOSS_PROP=`getproparg instance/properties`
JBOSS_EXTRA_OPTS=

if [ -z ${JBOSS_HOME} ]; then
	echo "jboss/home property not set"
	exit ${SMF_EXIT_ERR_CONFIG}
fi

if [ ! -z ${JBOSS_PARTITION} ]; then
	JBOSS_EXTRA_OPTS="${JBOSS_EXTRA_OPTS} -g ${JBOSS_PARTITION}"
fi

if [ ! -z ${JBOSS_UDP_ADDRESS} ]; then
	JBOSS_EXTRA_OPTS="${JBOSS_EXTRA_OPTS} -u ${JBOSS_UDP_ADDRESS}"
fi

if [ ! -z ${JBOSS_UDP_PORT} ]; then
	JBOSS_EXTRA_OPTS="${JBOSS_EXTRA_OPTS} -m ${JBOSS_UDP_PORT}"
fi

if [ ! -z ${JBOSS_PROP} ]; then
	JBOSS_EXTRA_OPTS="${JBOSS_EXTRA_OPTS} -D${JBOSS_PROP}"
fi

if [ ! -d ${JBOSS_HOME}/server/${JBOSS_PROFILE} ]; then
	echo "jboss/profile ${JBOSS_PROFILE} not found"
	exit ${SMF_EXIT_ERR_CONFIG}
fi

case "${METHOD}" in
'start')
	su ${JBOSS_USER} -c "${JBOSS_HOME}/bin/run.sh -c ${JBOSS_PROFILE} -b ${JBOSS_HOST}" ${JBOSS_EXTRA_OPTS} &
	;;

'stop')
	su ${JBOSS_USER} -c "${JBOSS_HOME}/bin/shutdown.sh -S"
	;;

*)
	echo "Usage: ${0} {start|stop}"
	exit 1
	;;
esac

exit ${SMF_EXIT_OK}

De esto lo más importante es el usuario y la ruta de JBoss, en general, como en casi cualquier sistema operativo es mejor crear un usuario para el servicio, en este caso jboss, aqui esta establecido el root directamente, lo que podría ser una falla de seguridad.

Este debe copiarse

cp jboss /lib/svc/method/
chmod +x /lib/svc/method/jboss

Luego debe crearse un XML para inciar el serivio, el del sitio original, yo lo modifique para JBoss-4.2.3.GA, las diferencias son que en la carpeta server las aplicacione son all, minimal y default, en cambio en JBoss 5.x son más.

El XML sería entonces






    

        
        
            
        

        
        
            
        


        

        

        
        
            
            
        

        
        
            
                
                
                
                
                
            
        
        
            
                
                
                
                
                
            
        
        
            
                
                
                
                
                
            
        

        

        

    


Luego de crearlo debes incorporarlo como servicio a través del siguiente comando

svccfg import jboss.xml

Para aplicar la configuracion de multicast debes cambiar las propiedades a través del siguiente comando

svccfg -s svc:/application/jboss:default setprop instance/host=0.0.0.0
svcadm refresh jboss:default

Luego de lo cual puedes aplicar el comando para inciar (y habilitar)

svcadm restart jboss:default

Para reiniciar

svcadm restart jboss:default

O para detener

svcadm restart jboss:default
Publicado en Desarrollo, JBoss, Solaris