martes, 7 de septiembre de 2010

Jboss 5.1.0 GA en Ubuntu Server 10.04.1

Vamos a ver como instalar Jboss 5.1.0 GA en Ubuntu Server 10.04.1 de 64 bits actualizado a día 6 de Septiembre de 2010. Como mínimo os recomiendo 1024 MB de RAM.

Jboss es un servidor de aplicaciones J2EE que incluye Tomcat. Puede ejecutar aplicaciones EJB (Enterprise Java Beans) y ejecutar una serie de servicios que un contenedor de servlets como Tomcat no puede ofrecer. Si usamos estas características empresariales no nos sirve con tener solo Tomcat, debemos tener un servidor de aplicaciones J2EE.

Java

Para poder usar Jboss necesitamos tener instalado Java. Para ello instalaremos el Java de Sun, ahora Oracle.

sudo aptitude install sun-java6-bin sun-java6-jre sun-java6-jdk sun-java6-plugin sun-java6-fonts libcommons-el-java

Aceptamos la licencia en la consola y vemos la versión instalada

$ java -version
java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) 64-Bit Server VM (build 16.3-b01, mixed mode)
$ update-alternatives --config java
Sólo hay una alternativa en el vínculo de grupo java: /usr/lib/jvm/java-6-sun/jre/bin/java
Nada que configurar.

Y tenemos java de 64 bits correctamente instalado.

Jboss 5.1.0 GA

Con Ubuntu disponemos de la version 4 de Jboss en los repositorios oficiales. Nosotros instalaremos la última versión estable.

Lo primero que haremos será descargar y descomprimir el servidor de aplicaciones Jboss. Son unos 127 MB.

$ sudo aptitude install unzip
$ mkdir jbosssrc
$ cd jbosssrc/
$ pwd
/home/fjbejarano/jbosssrc
$ wget http://sourceforge.net/projects/jboss/files/JBoss/JBoss-5.1.0.GA/jboss-5.1.0.GA.zip/download
$ mv download jboss-5.1.0.GA.zip
$ unzip jboss-5.1.0.GA.zip
$ ls
jboss-5.1.0.GA  jboss-5.1.0.GA.zip
$ cd jboss-5.1.0.GA

Vamos a poner la variable de entorno JBOSS_HOME que indicará el path al directorio de jboss. Para ellos hacemos que se cargue la variable al iniciar el sistema creando un fichero en profile.d. Por último ejecutamos las sentencias export en la shell para que estén activas desde ya.

$ sudo vim /etc/profile.d/jboss_home.sh

# Variable JBOSS_HOME
# Añadidas las lineas siguientes al fichero.

export JBOSS_HOME="/home/fjbejarano/jbosssrc/jboss-5.1.0.GA"
export PATH=$PATH:$JBOSS_HOME/bin

$ export JBOSS_HOME="/home/fjbejarano/jbosssrc/jboss-5.1.0.GA"
$ export PATH="$PATH:$JBOSS_HOME/bin"

$ echo $JBOSS_HOME
/home/fjbejarano/jbosssrc/jboss-5.1.0.GA

Una vez hecho esto, podemos ejecutar jboss. Para ello está el script run.sh en el directorio bin. Como este directorio lo hemos incluido en el path con las variables de entorno (ver un poco más arriba) podremos ejecutarlo desde cualquier directorio.

$ run.sh
=========================================================================

  JBoss Bootstrap Environment

  JBOSS_HOME: /home/fjbejarano/jbosssrc/jboss-5.1.0.GA

  JAVA: java

  JAVA_OPTS: -Dprogram.name=run.sh -server -Xms128m -Xmx512m -XX:MaxPermSize=256m -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djava.net.preferIPv4Stack=true

  CLASSPATH: /home/fjbejarano/jbosssrc/jboss-5.1.0.GA/bin/run.jar

=========================================================================

16:25:32,381 INFO  [ServerImpl] Starting JBoss (Microcontainer)...
16:25:32,386 INFO  [ServerImpl] Release ID: JBoss [The Oracle] 5.1.0.GA (build: SVNTag=JBoss_5_1_0_GA date=200905221053)
16:25:32,386 INFO  [ServerImpl] Bootstrap URL: null
16:25:32,386 INFO  [ServerImpl] Home Dir: /home/fjbejarano/jbosssrc/jboss-5.1.0.GA
16:25:32,387 INFO  [ServerImpl] Home URL: file:/home/fjbejarano/jbosssrc/jboss-5.1.0.GA/
16:25:32,387 INFO  [ServerImpl] Library URL: file:/home/fjbejarano/jbosssrc/jboss-5.1.0.GA/lib/
16:25:32,388 INFO  [ServerImpl] Patch URL: null
16:25:32,388 INFO  [ServerImpl] Common Base URL: file:/home/fjbejarano/jbosssrc/jboss-5.1.0.GA/common/
16:25:32,388 INFO  [ServerImpl] Common Library URL: file:/home/fjbejarano/jbosssrc/jboss-5.1.0.GA/common/lib/
16:25:32,388 INFO  [ServerImpl] Server Name: default
16:25:32,388 INFO  [ServerImpl] Server Base Dir: /home/fjbejarano/jbosssrc/jboss-5.1.0.GA/server
16:25:32,388 INFO  [ServerImpl] Server Base URL: file:/home/fjbejarano/jbosssrc/jboss-5.1.0.GA/server/
16:25:32,389 INFO  [ServerImpl] Server Config URL: file:/home/fjbejarano/jbosssrc/jboss-5.1.0.GA/server/default/conf/

...

He cortado la salida. Tardará un poco en arrancar completamente. Como vemos se ha arrancado correctamente en la interfaz localhost y puerto 8080. Para pararlo pulsamos CTRL+C y estará parado cuando muestre los mensajes

...
Shutdown complete
Halting VM

Para arrancarlo en la interfaz donde queremos que escuche Jboss en la red, debemos darle la IP. Podemos ver las opciones con run.sh --help o la versión con run.sh -V.

$ run.sh -b 192.168.1.12

Vamos a un navegador en otro ordenador de la red con acceso a 192.168.1.12 y comprobamos si funciona.


Como vemos lo tenemos funcionando. Como no hemos arrancado jboss con la opción -c (configuracion), se arrancará con la configuración llamada default. Para arrancarlo con otra configuración podríamos usar

$ run.sh -b 192.168.1.12 -c all

Esto arrancaría jboss con la configuración que arranca todos los servicios. Para parar el servidor, también podemos usar el comando

shutdown.sh -S -s 192.168.1.12

pero no es posible usarlo en la configuración mínima ya que esta no carga el servicio jmx-invoker-service.xml. Para usarlo hay que arrancar Jboss con otras configuraciones, pero, como hemos dicho antes, podemos usar CTRL+C en la consola donde arrancamos la mínima para pararlo.

Configuraciones

Jboss tiene varias configuraciones que podemos usar para arrancarlo. Cada una incluye una serie de servicios. Estas configuraciones están en el directorio $JBOSS_HOME/server y cada una tiene un directorio con su nombre:

  • minimal: Arranca con los servicios minimos necesarios para que funcione Jboss. El servicio de log, servidor JNDI y el scanner de url de despliegue para encontrar nuevos despliegues de aplicaciones. Es un servidor JMX/Jboss sin contenedor web, EJB o soporte JMS
  • default: Es un perfil básico de Java EE 5. Tiene los servicios usados más frecuentemente en los despliegues de aplicaciones Java EE pero no tiene servicio JAXR, IIOP o servicios de clustering.
  • all: Arranca todos los servicios disponibles. Incluyendo los servicios de clustering y RMI/IIOP.
  • standard: es una configuración de servicios certificada JavaEE 5.
  • web: es una configuración ligera de contenedor web que prevee el perfil web JavaEE 6.

Por tanto, arrancaremos Jboss con la configuración que más se adecúe a nuestros requerimientos.

Cada directorio de configuración tiene a su vez varios directorios que contienen los archivos que se usarán con esa configuración o instancia de Jboss. Al arrancar con la configuracion all, por ejemplo, se desplegarán las aplicaciones que tengamos en $JBOSS_HOME/server/all/deploy y si arrancamos con default, se desplegarán las aplicaciones de $JBOSS_HOME/server/default/deploy. Como vemos, para desplegar una aplicación hay que ponerla en el directorio deploy de la instancia que vayamos a arrancar.

Podemos desplegar aplicaciones JAR, WAR, SAR y EAR. Jboss está constantemente mirando este directorio para desplegar las aplicaciones que vayamos dejando de forma automática.

Otros directorios interesantes son los lib. Tenemos un directorio lib dentro de cada configuracion, $JBOSS_HOME/server/all/lib, por ejemplo, y otro en $JBOSS_HOME/common/lib. Dentro de estos directorios podemos añadir los archivos JAR que requieran nuestras aplicaciones para funcionar correctamente, como por ejemplo los JDBC para conectar la aplicación a una base de datos. La diferencia es que si añadimos el jar en $JBOSS_HOME/common/lib será usado por todas las aplicaciones en todas las configuraciones del servidor JBOSS mientras que si lo añadimos al directorio lib de una configuración específica solo serán usados por las aplicaciones de la configuración que arranquemos.

Crear el script de inicio automático para Ubuntu

Para que se arranque de forma automática Jboss debemos crear un script de inicio. Es curioso que Jboss traiga de serie un script para SUSE, otro para RedHat y otro para HP-UX pero no para debian based... bueno que se le va a hacer.

Copiamos el fichero /etc/init.d/skeleton y lo llamamos jboss5.sh. El fichero skeleton se usa como plantilla para crear los scripts de inicio. Después lo editamos (hemos cambiado bastantes cosas) y lo dejamos así

$ sudo cp /etc/init.d/skeleton /etc/init.d/jboss5.sh
$ sudo chmod 755 jboss5.sh
$ sudo vim /etc/init.d/jboss5.sh

#! /bin/sh
### BEGIN INIT INFO
# Provides:          jboss5.sh
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Script de inicio de Jboss 5
# Description:       Este script se usará para arrancar o parar el servidor de aplicaciones
#                    Jboss 5 mediante el scritp run.sh y shutdown.sh del directorio $JBOSS_HOME/bin
### END INIT INFO

# Author: Francisco J. Bejarano 
#
# Do NOT "set -e"

# PATH should only include /usr/* if it runs after the mountnfs.sh script
JBOSS_HOME=/home/fjbejarano/jbosssrc/jboss-5.1.0.GA
PATH=/sbin:/usr/sbin:/bin:/usr/bin:$JBOSS_HOME/bin

DESC="JBoss 5.1.0 GA Application Server"
NAME_START=run.sh
NAME_STOP=shutdown.sh

# Dirección IP donde escucha el servidor.
JB_BIND_ADDRESS="192.168.1.12"

# Valores posibles: default, all, standard, web
# La configuración minimal no se usa aquí para poder usar shutdown.sh
JB_CONFIGURACION="default"

# Argumentos de los demonios
DAEMON_ARGS_START="-b $JB_BIND_ADDRESS -c $JB_CONFIGURACION"
DAEMON_ARGS_STOP="-S -s $JB_BIND_ADDRESS"

DAEMON_START="$JBOSS_HOME/bin/$NAME_START"
DAEMON_STOP="$JBOSS_HOME/bin/$NAME_STOP"

PIDFILE=/var/run/$NAME_START.pid
SCRIPTNAME=/etc/init.d/jboss5.sh

# Salimos si no encuentra run.sh o shutdown.sh
[ -x "$DAEMON_START" ] || exit 0
[ -x "$DAEMON_STOP" ] || exit 0

# Lee el archivo de configuración de variables si está disponible. Nosotros no tenemos.
[ -r /etc/default/jboss5.sh ] && . /etc/default/jboss5.sh

# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions

#
# Función que arranca el servicio
# Hemos puesto la variable DAEMON_START y los argumentos correspondientes
#

do_start()
{
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON_START --test > /dev/null || return 1
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON_START -- $DAEMON_ARGS_START &
}

#
# Funcion que para el servicio jboss5.sh
#
do_stop()
{
        $DAEMON_STOP $DAEMON_ARGS_STOP
        rm -f $PIDFILE
}


case "$1" in
  start)
        [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME_START"
        do_start
        case "$?" in
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                *) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac
        ;;
  stop)
        [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME_START"
        do_stop
        case "$?" in
                0) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                *) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac
        ;;
  status)
       status_of_proc "$DAEMON_START" "$NAME_START" && exit 0 || exit $?
       ;;
  restart|force-reload)
        log_daemon_msg "Restarting $DESC" "$NAME_START"
        do_stop
        case "$?" in
          0)
                sleep 20
                do_start
                case "$?" in
                        0) log_end_msg 0 ;;
                        1) log_end_msg 1 ;; # Old process is still running
                        *) log_end_msg 1 ;; # Failed to start
                esac
                ;;
          *)
                # Failed to stop
                log_end_msg 1
                ;;
        esac
        ;;
  *)
        echo "Uso: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
        exit 3
        ;;
esac

Guardamos y lo añadimos al inicio.

$ sudo update-rc.d jboss5.sh defaults
 Adding system startup for /etc/init.d/jboss5.sh ...
   /etc/rc0.d/K20jboss5.sh -> ../init.d/jboss5.sh
   /etc/rc1.d/K20jboss5.sh -> ../init.d/jboss5.sh
   /etc/rc6.d/K20jboss5.sh -> ../init.d/jboss5.sh
   /etc/rc2.d/S20jboss5.sh -> ../init.d/jboss5.sh
   /etc/rc3.d/S20jboss5.sh -> ../init.d/jboss5.sh
   /etc/rc4.d/S20jboss5.sh -> ../init.d/jboss5.sh
   /etc/rc5.d/S20jboss5.sh -> ../init.d/jboss5.sh

Con este script podemos usarlo tanto con el clásico /etc/init.d/jboss5.sh como con service jboss5.sh.

$ sudo service jboss5.sh start

 =========================================================================

  JBoss Bootstrap Environment

  JBOSS_HOME: /home/fjbejarano/jbosssrc/jboss-5.1.0.GA

  JAVA: java

  JAVA_OPTS: -Dprogram.name=run.sh -server -Xms128m -Xmx512m -XX:MaxPermSize=256m -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djava.net.preferIPv4Stack=true

  CLASSPATH: /home/fjbejarano/jbosssrc/jboss-5.1.0.GA/bin/run.jar

=========================================================================

14:28:28,088 INFO  [ServerImpl] Starting JBoss (Microcontainer)...
14:28:28,091 INFO  [ServerImpl] Release ID: JBoss [The Oracle] 5.1.0.GA (build: SVNTag=JBoss_5_1_0_GA date=200905221053)
14:28:28,092 INFO  [ServerImpl] Bootstrap URL: null
14:28:28,092 INFO  [ServerImpl] Home Dir: /home/fjbejarano/jbosssrc/jboss-5.1.0.GA
...


$ sudo service jboss5.sh status
 * run.sh is running

Cuando rearranquemos el sistema, se iniciará Jboss de forma automática.

Consola de Administración

Para entrar en la consola de administración de Jboss podemos ir a http://192.168.1.12:8080/admin-console

Nos saldrá una pantalla de login y ahí, por defecto, ponemos usuario "admin" y contraseña "admin" sin las comillas.

Related Posts with Thumbnails