Archive for the ‘JBoss’ Category

Instalar JBoss como servicio en Solaris

sábado, noviembre 26th, 2011

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

Configuración de HTTPS sobre JBoss

jueves, junio 30th, 2011

Para activar HTTPS sobre JBoss lo primero que se tiene que tener es un certificado válido. Independientemente de ello se puede crear un certificado no validable a través de una de las herramientas Java y establecerlo en una configuración de JBoss para probar las aplicaciones.

Crear certificado

Para crear el certificado se debe utilizar la herramienta keytool que viene con Java, que se encuentra ubicada en la carpeta bin de la instalación de Java.
La creación del certificado se puede hacer de forma similar a este ejemplo

keytool -genkey -keystore server.keystore -storepass rmi+ssl -keypass rmi+ssl -keyalg RSA -alias serverarocl -validity 3650 -dname "cn=server,ou=admin,dc=aro,dc=cl"

con esto se generará un archivo server.keystore

Configuración de HTTPS en JBoss

Con el archivo generado se debe mover a la carpeta del servidor JBOSS_HOME/server/default/conf por ejemplo y luego configurar el server.xml añadiendo

   
      	

Luego de reiniciar la configuración ya estará aplicada, pero el certificado no es validable, por lo que al primer acceso, con firefox por ejemplo, te solicitará añadir la excepción del sitio

Luego confirmarás excepción de seguridad

Y ya podrás acceder al sitio.
Para tener un certificado válido este debe ser comprado a algún proveedor valido de esta tipo de certificado.

Conectar VisualVM a JBoss

martes, mayo 24th, 2011

Para ocupar VisualVM con JBoss se deben hacer modificaciones den el run.bat (la verdad es que la documentación expresa que los cambios se deben hacer en el run.conf, pero a mí no me funciono posicionarlo hay).

Se deben agregar las lineas

set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.port=6789
set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.authenticate=false
set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.ssl=false

Asumiendo que se ha modificado el run.bat de nuestro servicio en una ip 192.168.1.2, con las líneas anteriormente descritas se ha habilitado el puerto 6789 para conexion con VisualVM, luego de ello se adiciona el JMX Connector

Con lo cual ya tienes configurado para leer tu JBoss.

Preparando un datasource para JBoss

martes, mayo 24th, 2011

En JBoss para poder activar un datasource se debe crear un archivo *-ds.xml, dentro del cual se pondra segun la siguiente estructura la definicion (un ejemplo de oracle-ds.xml)

  
  
    jdbc/algoaqui
    jdbc:oracle:thin:@localhost:1521:orcl
    oracle.jdbc.driver.OracleDriver
    usuario
    password
	10
	40
	10
	30000
	32
    org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter
      
         Oracle9i
      
  
  

jndi-name : Es el nombre que se le dará al JNDI y con el cual se podrá en el codigo crear el Datasource.
connection-url :Apunta a la conexión, segun el estandar de jdbc.
driver-class :Es la clase del datasource que se va a instanciar. Debieses dejar la librería de conexion en la carpeta %JBOSS_HOME%\server\%TIPO_SERVER%\lib
user-name : Es el nombre de usuario de la conexión
password : Es la password de la conexión
min-pool-size : Es la cantidad mínima de conexiones que se lanza al inicio.
max-pool-size : Es el máximo de conexiones que soportará el datasource pool.
idle-timeout-minutes : Es la cantidad de minutos que obligatoriamente esta abierta una conexión, si se supera este tiempo en una conexión que no posee actividad, entonces se cerrará la conexión.
blocking-timeout-millis : Es la cantidad de tiempo que se espera para tomar una conexión, si la conexión no es entregada en este tiempo se enviará una Exception.
prepared-statement-cache-size : Es un cache para los PreparedStatement más utilizados, de forma de tener preparadas las consultas que se envían cachadas.

Instalar JBoss como servicio en Windows

jueves, noviembre 26th, 2009

Si eres de las personas que ya instalo JBoss en Windows y deseas instalar como servicio al este servidor de aplicaciones primero debes descargar una aplicacion desde aqui.

Dentro del comprimido existe una carpeta bin con los siguientes archivos (la imagen es para windows 64 bits, descarga la versión de 32bits si no posees un sistema operativo de 64)…

… toma los archivos de la carpeta /bin/ que trae el comprimido y copiala en %JBOSS_HOME%/bin/ luego ejecuta el service.bat

service install
Service JBoss Application Server 5.0 installed

Con esto podras iniciar el servidor JBoss desde la consola de servicios.

Importante

Como saben, la consola de servicios de Windows tiene tres botones, uno para inciar, detener y reiniciar, yo recomiendo evitar el boton reiniciar para este servicio, el reinicio puede provocar que el servicio se detenga en la consola pero no la ejecución del proceso Java que inicio el servicio, lo que no es detectado por el programa y entonces se inicia nuevamente el servicio pero los puertos (8080 por ejemplo) aun siguen tomados por el JBoss que aun no se ha detenido, por lo que el nuevo servicio que se inicia se inicia con error. No he investigado si es configuración del servicio o algun problema de mi configuración de windows, por lo que no puedo emitir alguna solución de este punto.

Instalación JBoss en CEntOS 5.4

martes, noviembre 17th, 2009

Luego de instalar Java en un servidor CEntOS 5.4 me di a la tarea de instalar JBoss. Descargue la versión más actual de JBoss desde www.jboss.org, en este momento 5.1.0.GA. Como root hice las siguientes operaciones en orden para una instalación exitosa

Descomprimi JBoss

unzip jboss-5.1.0.GA

La moví a /usr/local, en donde supuestamente debe quedar la instalacion (lo digo porque los scripts estan direccionados a esa carpeta)

mv jboss-5.1.0.GA /usr/local/

Hice de /usr/local la carpeta actual

cd /usr/local

Renombre la carpeta de su nombre original a jboss (la forma linux de renombrar es mover hacia la misma carpeta actual con otro nombre)

mv jboss-5.1.0.GA jboss

Cree el grupo jboss

groupadd jboss

Cree un usuario y lo incorpore al grupo jboss

useradd -d /usr/local/jboss -g jboss jboss

Cambie el usuario de la carpeta recursivamente a jboss

chown jboss:jboss -R /usr/local/jboss

Copie un script que viene dentro de la distribucion hacia la inicializacion del servidor, desde esta carpeta uno puede iniciar como servicio las aplicaciones

cp /usr/local/jboss/bin/jboss_init_redhat.sh /etc/init.d/jboss

El archivo lo modifique y le incluí la linea

JBOSS_HOST=0.0.0.0

Finalmente inclui un enlace simbolico al inicio, con esto se iniciará el serivio cuando reinicie la máquina (obviamente debe ser modificado si posees un inicio grafico a rc5.d)

ln -s /etc/init.d/jboss /etc/rc3.d/S96jboss

Con todo esto aplicado en orden tienes un servidor JBoss funcionando en CEntOS, no lo he probado en alguna otra version de Linux, pero debería sufrir ligeras modificaciones.

Como nota aparte, si es qu tienes un firewall funcionando recuerda dar el permiso al puerto correcto