jueves, 24 de febrero de 2011

Instalación de Jboss 6.0.0 Final "Neo" en Fedora 14

ACTUALIZACION: 28 de Febrero de 2011: He añadido un poco más de seguridad al final del artículo para que no se pueda acceder libremente a JMX Console.

Vamos a instalar Jboss 6.0.0 Final, la nueva versión JBoss Application Server, en Fedora 14.

Instalación

Vamos a instalarlo en el directorio /opt junto con la máquina virtual de java.

$ su -
Contraseña: 
[root@fed1400 ~]# cd /opt

Instalación de Java

Descargamos el fichero jdk-6u24-linux-i586.bin desde la página web de Oracle/Sun

http://www.oracle.com/technetwork/java/javase/downloads/index.html


Instalamos la JVM

# chmod u+x jdk-6u24-linux-i586.bin
# ./jdk-6u24-linux-i586.bin
...
Java(TM) SE Development Kit 6 successfully installed.

Product Registration is FREE and includes many benefits:
* Notification of new versions, patches, and updates
...
Press Enter to continue.....
Done.

Pulsamos intro y esperamos un rato hasta que salga done.

Ahora tenemos un directorio /opt/jdk1.6.0_24 donde tenemos la máquina virtual java.

Comprobamos la instalación.

# java -version
java version "1.6.0_20"
OpenJDK Runtime Environment (IcedTea6 1.9.6) (fedora-52.1.9.6.fc14-i386)
OpenJDK Client VM (build 19.0-b09, mixed mode)

# update-alternatives --config java

Hay 1 programa que proporciona 'java'.

  Selección    Comando
-----------------------------------------------
*+ 1           /usr/lib/jvm/jre-1.6.0-openjdk/bin/java

Presione Intro para mantener la selección actual[+], o escriba el número de la selección:

Vemos que usa open JDK que teníamos instalado. Vamos a cambiarlo para que use el Java de Sun.

Instalamos la alternativa

# update-alternatives --install /usr/bin/java java /opt/jdk1.6.0_24/jre/bin/java 16001 --slave /usr/bin/javaws javaws /opt/jdk1.6.0_24/jre/bin/javaws --slave /usr/bin/keytool keytool /opt/jdk1.6.0_24/jre/bin/keytool --slave /usr/bin/orbd orbd /opt/jdk1.6.0_24/jre/bin/orbd --slave /usr/bin/pack200 pack200 /opt/jdk1.6.0_24/jre/bin/pack200 --slave /usr/bin/rmid rmid /opt/jdk1.6.0_24/jre/bin/rmid --slave /usr/bin/rmiregistry rmiregistry /opt/jdk1.6.0_24/jre/bin/rmiregistry --slave /usr/bin/servertool servertool /opt/jdk1.6.0_24/jre/bin/servertool --slave /usr/bin/tnameserv tnameserv /opt/jdk1.6.0_24/jre/bin/tnameserv --slave /usr/bin/unpack200 unpack200 /opt/jdk1.6.0_24/jre/bin/unpack200 --slave /usr/lib/jvm/jre jre /opt/jdk1.6.0_24/jre --slave /usr/lib/jvm-exports/jre jre_exports /opt/jdk1.6.0_24/jre/lib --slave /usr/share/man/man1/java.1.gz java.1.gz /opt/jdk1.6.0_24/man/man1/java.1 --slave /usr/share/man/man1/javaws.1.gz javaws.1.gz /opt/jdk1.6.0_24/man/man1/javaws.1 --slave /usr/share/man/man1/keytool.1.gz keytool.1.gz /opt/jdk1.6.0_24/man/man1/keytool.1 --slave /usr/share/man/man1/orbd.1.gz orbd.1.gz /opt/jdk1.6.0_24/man/man1/orbd.1 --slave /usr/share/man/man1/pack200.1.gz pack200.1.gz /opt/jdk1.6.0_24/man/man1/pack200.1 --slave /usr/share/man/man1/rmid.1.gz rmid.1.gz /opt/jdk1.6.0_24/man/man1/rmid.1 --slave /usr/share/man/man1/rmiregistry.1.gz rmiregistry.1.gz /opt/jdk1.6.0_24/man/man1/rmiregistry.1 --slave /usr/share/man/man1/servertool.1.gz servertool.1.gz /opt/jdk1.6.0_24/man/man1/servertool.1 --slave /usr/share/man/man1/tnameserv.1.gz tnameserv.1.gz /opt/jdk1.6.0_24/man/man1/tnameserv.1 --slave /usr/share/man/man1/unpack200.1.gz unpack200.1.gz /opt/jdk1.6.0_24/man/man1/unpack200.1

Un buen chorizo para que coja los directorios y ficheros correspondientes a la jvm de sun... pff 1 hora buscando como ponerlo y que era cada cosa. He puesto 1 punto más de prioridad al java de Sun para que sea la alternativa favorita (16001)

# update-alternatives --config java

Hay 2 programas que proporcionan 'java'.

  Selección    Comando
-----------------------------------------------
 + 1           /usr/lib/jvm/jre-1.6.0-openjdk/bin/java
*  2           /opt/jdk1.6.0_24/bin/java

Presione Intro para mantener la selección actual[+], o escriba el número de la selección:  2 

# update-alternatives --config java

Hay 2 programas que proporcionan 'java'.

  Selección    Comando
-----------------------------------------------
   1           /usr/lib/jvm/jre-1.6.0-openjdk/bin/java
*+ 2           /opt/jdk1.6.0_24/jre/bin/java
Presione Intro para mantener la selección actual[+], o escriba el número de la selección:  

Ahora vemos que Java de Sun está seleccionado (+)

Por último, añadimos la ruta de java de Sun a la variable de entorno JAVA_PATH y que esta se añada al path .

# vim /etc/profile.d/java_home.sh

# Rutas a la máquina virtual de java de Sun instalada en /opt

export JAVA_HOME=/opt/jdk1.6.0_24
export PATH=$PATH:$JAVA_HOME/bin

Para no reiniciar exportamos las variables ahora

# source /etc/profile.d/java_home.sh
# echo $JAVA_HOME
/opt/jdk1.6.0_24
# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/jboss-6.0.0.Final/bin:/root/bin:/opt/jdk1.6.0_24/bin

Descargamos e instalamos JBOSS 6

Descargamos el Application Server desde SourceForge

# wget http://sourceforge.net/projects/jboss/files/JBoss/JBoss-6.0.0.Final/jboss-as-distribution-6.0.0.Final.zip/download

Descomprimimos el fichero Zip en /opt

# cd /opt && unzip jboss-as-distribution-6.0.0.Final.zip
# cd jboss-6.0.0.Final
# ls -la
total 240
drwxrwxr-x. 8 root root   4096 Dec 28 08:35 .
drwxr-xr-x. 5 root root   4096 Feb 14 13:31 ..
drwxrwxr-x. 3 root root   4096 Dec 28 08:30 bin
drwxrwxr-x. 2 root root  12288 Dec 28 08:30 client
drwxrwxr-x. 4 root root   4096 Dec 28 08:28 common
drwxrwxr-x. 6 root root   4096 Dec 28 08:29 docs
-rw-rw-r--. 1 root root 204254 Dec 28 08:35 jar-versions.xml
drwxrwxr-x. 3 root root   4096 Dec 28 08:32 lib
drwxrwxr-x. 7 root root   4096 Dec 28 08:29 server

Una explicación de los directorios y lo básico de Jboss podéis verla aquí

http://yoadminsis.blogspot.com/2010/09/jboss-510-ga-en-ubuntu-server-10041.html

Creamos el fichero para cargar la variable de entorno JBOSS_HOME y además que los ejecutables de JBOSS estén en el PATH ($JBOSS_HOME/bin).

# vim /etc/profile.d/jboss_home.sh

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

export JBOSS_HOME="/opt/jboss-6.0.0.Final"
export PATH=$PATH:$JBOSS_HOME/bin

Exportamos las variables para no reiniciar el sistema.

# source /etc/profile.d/jboss_home.sh
# echo $JBOSS_HOME
/opt/jboss-6.0.0.Final
# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/opt/jboss-6.0.0.Final/bin

Creamos el usuario jboss y le damos la propiedad sobre el directorio. Además vemos si el usuario jboss tiene el path correcto de java.

# useradd jboss
# passwd jboss
# chown -R jboss:jboss /opt/jboss-6.0.0.Final
# su - jboss -c "java -version"
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) Client VM (build 19.1-b02, mixed mode, sharing)

Vemos que usará el java de Sun. Arrancamos el servidor

# su - jboss -c "run.sh -b 192.168.1.41 -c all"

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

  JBoss Bootstrap Environment

  JBOSS_HOME: /opt/jboss-6.0.0.Final

  JAVA: /opt/jdk1.6.0_24/bin/java

  JAVA_OPTS: -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 -Dprogram.name=run.sh -Djava.library.path=/opt/jboss-6.0.0.Final/bin/native/lib

  CLASSPATH: /opt/jboss-6.0.0.Final/bin/run.jar:/opt/jdk1.6.0_24/lib/tools.jar

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

14:58:27,930 INFO  [AbstractJBossASServerBase] Server Configuration:

        JBOSS_HOME URL: file:/opt/jboss-6.0.0.Final/
        Bootstrap: $JBOSS_HOME/server/all/conf/bootstrap.xml
        Common Base: $JBOSS_HOME/common/
        Common Library: $JBOSS_HOME/common/lib/
        Server Name: all
        Server Base: $JBOSS_HOME/server/
        Server Library: $JBOSS_HOME/server/all/lib/
        Server Config: $JBOSS_HOME/server/all/conf/
        Server Home: $JBOSS_HOME/server/all/
        Server Data: $JBOSS_HOME/server/all/data/
        Server Log: $JBOSS_HOME/server/all/log/
        Server Temp: $JBOSS_HOME/server/all/tmp/

14:58:27,935 INFO  [AbstractServer] Starting: JBossAS [6.0.0.Final "Neo"]
14:58:31,275 INFO  [ServerInfo] Java version: 1.6.0_24,Sun Microsystems Inc.
14:58:31,276 INFO  [ServerInfo] Java Runtime: Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
14:58:31,277 INFO  [ServerInfo] Java VM: Java HotSpot(TM) Server VM 19.1-b02,Sun Microsystems Inc.
14:58:31,277 INFO  [ServerInfo] OS-System: Linux 2.6.35.11-83.fc14.i686,i386
14:58:31,277 INFO  [ServerInfo] VM arguments: -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 -Dprogram.name=run.sh -Djava.library.path=/opt/jboss-6.0.0.Final/bin/native/lib -Djava.endorsed.dirs=/opt/jboss-6.0.0.Final/lib/endorsed 
...
14:59:27,067 INFO  [service] Removing bootstrap log handlers
14:59:27,459 INFO  [org.apache.coyote.http11.Http11Protocol] Starting Coyote HTTP/1.1 on http-192.168.1.41-8080
14:59:27,464 INFO  [org.apache.coyote.ajp.AjpProtocol] Starting Coyote AJP/1.3 on ajp-192.168.1.41-8009
14:59:27,467 INFO  [org.jboss.bootstrap.impl.base.server.AbstractServer] JBossAS [6.0.0.Final "Neo"] Started in 59s:520ms

Vemos que ha arrancado bien con la instancia all en la dirección indicada. He añadido temporalmente la siguiente línea a /etc/sysconfig/iptables y reiniciado iptables para abrir el puerto 8080 y acceder a JBOSS 6.

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

Ponemos en el navegador http://192.168.1.41:8080 y vemos que está correctamente instalado


Para parar Jboss 6 usamos el comando shutdown. Debéis poner el comando siguiente ya que si usáis shutdown -S a secas os dará un error y no se apagará. Debéis poner la IP o nombre de host con el que hayáis lanzado el servidor.

# su - jboss -c "shutdown.sh -s service:jmx:rmi:///jndi/rmi://192.168.1.41:1090/jmxrmi"
Shutdown message has been posted to the server.
Server shutdown may take a while - check logfiles for completion

Podemos ver si ha parado mirando el log correspondiente

# cat /opt/jboss-6.0.0.Final/server/all/log/boot.log
...
16:59:16,273 INFO  [poa] POA OTS destroyed
16:59:16,275 INFO  [orb] ORB run, exit
16:59:16,276 INFO  [poa] POA RootPOA destroyed
16:59:16,285 INFO  [iiop] Listener exited
16:59:16,458 INFO  [SnmpAgentService] SNMP agent stopped
16:59:19,405 INFO  [AbstractServer] Stopped: JBossAS [6.0.0.Final "Neo"] in 5s:469ms

Inicio automático de JBoss

Para que JBoss se inicie con el sistema copiamos el fichero de inicio al directorio correspondiente. Este fichero de inicio viene junto con JBoss. Después debemos modificarlo para poner las variables correspondientes.

# cp /opt/jboss-6.0.0.Final/bin/jboss_init_redhat.sh /etc/init.d/
# vim /etc/init.d/jboss_init_redhat.sh 

#!/bin/sh
#
# $Id: jboss_init_redhat.sh 81068 2008-11-14 15:14:35Z dimitris@jboss.org $
#
# JBoss Control Script
#
# To use this script run it as root - it will switch to the specified user
#
# Here is a little (and extremely primitive) startup/shutdown script
# for RedHat systems. It assumes that JBoss lives in /usr/local/jboss,
# it's run by user 'jboss' and JDK binaries are in /usr/local/jdk/bin.
# All this can be changed in the script itself. 
#
# Either modify this script for your requirements or just ensure that
# the following variables are set correctly before calling the script.

#define where jboss is - this is the directory containing directories log, bin, conf etc
# Directorio de instalación de Jboss
JBOSS_HOME=${JBOSS_HOME:-"/opt/jboss-6.0.0.Final"}

#define the user under which jboss will run, or use 'RUNASIS' to run as the current user
# Usuario de Jboss
JBOSS_USER=${JBOSS_USER:-"jboss"}

#make sure java is in your path
# Ponemos la variable JAVA_HOME que indica donde se encuentra JAVA.
JAVAPTH=${JAVAPTH:-"$JAVA_HOME"}

#configuration to use, usually one of 'minimal', 'default', 'all'
# Arrancamos JBOSS con la instancia all que tiene todos los servicios
# disponibles, incluidos los del cluster.
JBOSS_CONF=${JBOSS_CONF:-"all"}

# Agregamos la variable JBOSS_HOST con la IP donde arrancaremos el servidor
JBOSS_HOST=192.168.1.41

#if JBOSS_HOST specified, use -b to bind jboss services to that address
JBOSS_BIND_ADDR=${JBOSS_HOST:+"-b $JBOSS_HOST"}

#define the classpath for the shutdown class
JBOSSCP=${JBOSSCP:-"$JBOSS_HOME/bin/shutdown.jar:$JBOSS_HOME/client/jnet.jar"}

#define the script to use to start jboss
JBOSSSH=${JBOSSSH:-"$JBOSS_HOME/bin/run.sh -c $JBOSS_CONF $JBOSS_BIND_ADDR"}

if [ "$JBOSS_USER" = "RUNASIS" ]; then
  SUBIT=""
else
  SUBIT="su - $JBOSS_USER -c "
fi

if [ -n "$JBOSS_CONSOLE" -a ! -d "$JBOSS_CONSOLE" ]; then
  # ensure the file exists
  touch $JBOSS_CONSOLE
  if [ ! -z "$SUBIT" ]; then
    chown $JBOSS_USER $JBOSS_CONSOLE
  fi 
fi

if [ -n "$JBOSS_CONSOLE" -a ! -f "$JBOSS_CONSOLE" ]; then
  echo "WARNING: location for saving console log invalid: $JBOSS_CONSOLE"
  echo "WARNING: ignoring it and using /dev/null"
  JBOSS_CONSOLE="/dev/null"
fi

#define what will be done with the console log
JBOSS_CONSOLE=${JBOSS_CONSOLE:-"/dev/null"}

# Comando de inicio
JBOSS_CMD_START="cd $JBOSS_HOME/bin; $JBOSSSH"

# Comando de parada. He comentado el que habia y he añadido el siguiente
JBOSS_CMD_STOP=${JBOSS_CMD_STOP:-"shutdown.sh -s service:jmx:rmi:///jndi/rmi://$JBOSS_HOST:1090/jmxrmi"}
#JBOSS_CMD_STOP=${JBOSS_CMD_STOP:-"java -classpath $JBOSSCP org.jboss.Shutdown --shutdown"}

if [ -z "`echo $PATH | grep $JAVAPTH`" ]; then
  export PATH=$PATH:$JAVAPTH
fi

if [ ! -d "$JBOSS_HOME" ]; then
  echo JBOSS_HOME does not exist as a valid directory : $JBOSS_HOME
  exit 1
fi

echo JBOSS_CMD_START = $JBOSS_CMD_START

case "$1" in
start)
    cd $JBOSS_HOME/bin
    if [ -z "$SUBIT" ]; then
        eval $JBOSS_CMD_START >${JBOSS_CONSOLE} 2>&1 &
    else
        $SUBIT "$JBOSS_CMD_START >${JBOSS_CONSOLE} 2>&1 &" 
    fi
    ;;
stop)
    if [ -z "$SUBIT" ]; then
        $JBOSS_CMD_STOP
    else
        $SUBIT "$JBOSS_CMD_STOP"
    fi 
    ;;
restart)
    $0 stop
    $0 start
    ;;
*)
    echo "usage: $0 (start|stop|restart|help)"
esac

Por último añadimos el script a los diferentes runlevels.

# ln -s ../init.d/jboss_init_redhat.sh /etc/rc0.d/K13jboss_init_redhat.sh
# ln -s ../init.d/jboss_init_redhat.sh /etc/rc6.d/K13jboss_init_redhat.sh
# ln -s ../init.d/jboss_init_redhat.sh /etc/rc1.d/K13jboss_init_redhat.sh
# ln -s ../init.d/jboss_init_redhat.sh /etc/rc2.d/S86jboss_init_redhat.sh
# ln -s ../init.d/jboss_init_redhat.sh /etc/rc3.d/S86jboss_init_redhat.sh
# ln -s ../init.d/jboss_init_redhat.sh /etc/rc4.d/S86jboss_init_redhat.sh
# ln -s ../init.d/jboss_init_redhat.sh /etc/rc5.d/S86jboss_init_redhat.sh

Ahora debería arrancar y parar correctamente con el sistema.

Conectar JBoss con Apache

Apache usa el mod_proxy para conectarse con Jboss. Debemos tener instalado apache en fedora 14 como vemos aquí

http://yoadminsis.blogspot.com/2011/02/instalar-apache-22-en-gnulinux-fedora.html

Una vez instalado ya tendremos el módulo de proxy y podremos configurarlo
# cp httpd.conf httpd.conf_original
# vim /etc/httpd/conf/httpd.conf

Vamos a la sección entre las directivas # enable the proxy server:
y # End of proxy directives. Y la dejamos así.

#
# Proxy Server directives. Uncomment the following lines to
# enable the proxy server:
#
<IfModule mod_proxy.c>

        # Con esta directiva en Off hacemos que se deshabilite la redirección del
        # proxy excepto para las entradas que nosotros pongamos con ProxyPass
        ProxyRequests Off

        # Hace que las peticiones originales de información de host se mantengan a 
        # través de la conexión del conector AJP. Es útil para aplicaciones que
        # necesitan mantener esta información.
        ProxyPreserveHost On

        # Indica que todos los hosts (*) pueden acceder a traves del proxy
        <Proxy *>
                AddDefaultCharset off
                Order deny,allow
                Allow from all
                #Allow from .example.com
        </Proxy>

        # Enable/disable the handling of HTTP/1.1 "Via:" headers.
        # ("Full" adds the server version; "Block" removes all outgoing Via: headers)
        # Set to one of: Off | On | Full | Block
        ProxyVia On


        # Indica que las peticiones a apache para / se pasen por el protocolo AJP 
        # a la dirección IP y puerto donde Jboss está escuchando mediante el protocolo
        # AJP con un conector.
        ProxyPass / ajp://192.168.1.41:8009/

        # para una aplicación específica
        #ProxyPass /miaplicacion ajp://192.168.1.41:8009/miaplicacion


        # Indica que cualquier peticion de cabeceras (request headers) del reverse proxy 
        # debería ser reescrita de forma adecuada para asegurar que las redirecciones que
        # haga el servidor Jboss sean manejadas de forma correcta.
        ProxyPassReverse / ajp://192.168.1.41:8009/

        # Para una aplicacion especifica
        #ProxyPassReverse /miaplicacion ajp://192.168.1.41:8009/miaplicacion

        #Permitimos el acceso a /
        <Location / >
                Order allow,deny
                Allow from all
        </Location>


        # Permitimos el acceso a la aplicación miapliacion
        #<Location /miaplicacion >
        #        Order allow,deny
        #        Allow from all
        #</Location>

        # Bloque para otraaplicacion. Con cada aplicación desplegada que queramos incluir en
        # el conector deberemos poner el bloque siguiente.

        #ProxyPass /otraaplicacion ajp://192.168.1.41:8009/otraaplicacion
        #ProxyPassReverse /otraaplicacion ajp://192.168.1.41:8009/otraaplicacion

        #<Location /otraaplicacion >
        #        Order allow,deny
        #        Allow from all
        #</Location>

#
# To enable a cache of proxied content, uncomment the following lines.
# See http://httpd.apache.org/docs/2.2/mod/mod_cache.html for more details.
#

#<IfModule mod_disk_cache.c>
#   CacheEnable disk /
#   CacheRoot "/var/cache/mod_proxy"
#</IfModule>
#


</IfModule>
# End of proxy directives.

Reiniciamos el servidor apache

# service httpd restart
Stopping httpd:            [  OK  ]
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using ::1 for ServerName   [  OK  ]

Y probamos


Lo suyo es crear los Proxypass para cada aplicación en vez de para el raiz / si queremos usar también aplicaciones web que funcionen en el servidor Apache y no solo aplicaciones Jboss. Si solo vamos a servir aplicaciones Jboss podemos usar esta configuración.

Usuarios y contraseñas de JBoss

Por último vamos a cambiar algunos usuarios por defecto de Jboss para que no se comprometa la seguridad.

# cd /opt/jboss-6.0.0.Final/server/all/conf/props/
# ls
hornetq-roles.properties  jbossws-roles.properties  jmx-console-roles.properties
hornetq-users.properties  jbossws-users.properties  jmx-console-users.properties

Los usuarios y contraseñas se ponen en unos ficheros de propiedades en cada configuración del servidor. En nuestro caso es "all". Después, las aplicaciones usan esos ficheros.

Primero quitamos el usuario admin como usuario por defecto y añadimos fjbejarano al rol JBossAdmin
# vim jmx-console-roles.properties

# A sample roles.properties file for use with the UsersRolesLoginModule
#admin=JBossAdmin,HttpInvoker
fjbejarano=JBossAdmin,HttpInvoker

Después creamos el usuario fjbejarano y le damos la contraseña "password".

# vim jmx-console-users.properties 
 
# A sample users.properties file for use with the UsersRolesLoginModule
#admin=admin
fjbejarano=password

Y listo, ahora podremos entrar con nuestro usuario y contraseña a la aplicación admin-console, la consola de Administración de Jboss.


Por último, para que nadie pueda entrar sin contraseña a manejar el servidor mediante jmx-console vamos a agregar la seguridad.

Vamos al directorio de la aplicación jmx-console para acceder a los archivos que debemos modificar. En el primer archivo descomentamos el dominio de seguridad para que la aplicación use seguridad dejándolo así.

# cd /opt/jboss-6.0.0.Final/common/deploy/jmx-console.war/WEB-INF
# vim jboss-web.xml 

<!DOCTYPE jboss-web PUBLIC
   "-//JBoss//DTD Web Application 5.0//EN"
   "http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd">

<jboss-web>
   <!-- Uncomment the security-domain to enable security. You will
      need to edit the htmladaptor login configuration to setup the
      login modules used to authentication users. -->      

      <security-domain>java:/jaas/jmx-console</security-domain>

</jboss-web>

En el segundo fichero, web.xml, en el mismo directorio descomentamos la siguiente sección.

# vim web.xml

   <!-- A security constraint that restricts access to the HTML JMX console
   to users with the role JBossAdmin. Edit the roles to what you want and
   uncomment the WEB-INF/jboss-web.xml/security-domain element to enable
   secured access to the HTML JMX console. -->

   <security-constraint>
     <web-resource-collection>
       <web-resource-name>HtmlAdaptor</web-resource-name>
       <description>An example security config that only allows users with the
         role JBossAdmin to access the HTML JMX console web application
       </description>
       <url-pattern>/*</url-pattern>
     </web-resource-collection>

     <auth-constraint>
       <role-name>JBossAdmin</role-name>
     </auth-constraint>

   </security-constraint>


Como vemos usará el role JBossAdmin al que añadimos, anteriormente, el usuario fjbejarano para la configuración all.

Ahora vamos a Administration Console, ponemos usuario y contraseña y vamos a reiniciar la aplicación jmx-console.


Por último vamos a ver si funciona, vamos al raiz de JBoss y damos a JMX Console.



Como vemos, pedirá el usuario y la contraseña para acceder. Espero que os sea de utilidad :-)
Related Posts with Thumbnails