Te damos la bienvenida a la comunidad de T!Estás a un paso de acceder al mejor contenido, creado por personas como vos.

O iniciá sesión con
¿No tenés una cuenta?
Introducción

Que es un JBoss?

Básicamente, JBoss es un servidor de aplicaciones de código abierto, basado en la plataforma JEE. Y implementada completamente en lenguaje de programación Java.

Y como esta basado en Java, JBoss puede ser usado en cualquier Sistema Operativo que soporte Java.

Entrando en el tema de JBoss, no podemos dejar de hablar de su pariente mas cercano 'TomCat'... El Tomcat básicamente es la implementación de WebContainer de JBoss creado por la fundación Apache, este utiliza el modulo mod_jdk para 'cargar' aplicaciones desenvueltas en Java.

El Tomcat tiene como característica principal, su practicidad, en cuanto a practicidad no se aproxima a JBoss (algunos pueden discrepar de mi conclusión), mas en mi caso pude notar eso.

Una de las cosas que pude darme cuenta fue que al crear una aplicación para acceder a un BD MySQL y utilizar Tomcat, obligatoria mente necesita tener los Drivers "jar" dentro de su aplicación (.war), ya que no dispone.

En este punto el JBoss es pero diferente, como?

Necesita del Driver MySQL para acceder a un DB MySQL, pero puede habilitar su Data Source dentro del propio JBoss, que el ira a cargar el Driver cuando sea necesario con mas rapidez que el Tomcat.

Con esto usted no va a necesitar tener en su aplicación (.war) los Drivers "jar", dejando este bajo el manejo del propio JBoss.

- Links para programas que vamos utilizar:


JDK 1.7 ( Java SE Development Kit 7)
JBoss AS 7


- Informaciones adicionales:

Comunidad de JBoss



Ahora, después de la presentación vamos a lo importante.

Para esta instalación fue utilizada la distro CentOS 5.5 final.

Particularmente me gusta hacer las cosas de manera mas antigua pero mas eficaz, después de realizar la descarga del JDK, realice los siguientes pasos.

* Consejo: Si utilizas Ubuntu, siga los pasos 1 y 2, y luego ir paso a paso en la parte inferior. Red Hat y derivados, puede continuar.

1. Verificando la existencia de otras maquinas java instaladas

$ java -version

En caso de ya existir Java instalado, usted tendrá una respuesta parecida a esta:

    java version "VERSIÓN INSTALADA"
    Java(TM) SE Runtime Environment (build 1.7.0_03-b04)
    Java HotSpot(TM) 64-Bit Server VM (build 22.1-b02, mixed mode) 


2. Si existiese alguna versión de Java instalada, tendrá el siguiente directorio en su maquina: "/usr/lib/jvm/(javaversion)".
Para descompactar el Java descargado ejecute:

$ tar -zxvf jdk-7u3-linux-i586.tar.gz
$ mv jdk-7u3-linux-i586 jdk1.7

Despues, retornar con la siguiente ruta:
[/color]
    $ pwd
    /usr/lib/jvm/Jdk1.7 



Obs.: Caso no existiera el directorio "/usr/lib/jvm", podra descompactar el paquete en "/usr/local".

3. Java 1.7 está instalando, pero aun falta declarar algunas variables para hacer nuestro 'ver' el JDK1.7 como estándar.

Localice el archivo "/etc/profile".

- Por que?
- Por que en Gnu/Linux, todas las variables especificadas en este archivo serán inicializados automáticamente y automáticamente exportadas a la inicialización del sistema.

# vim /etc/profile


Agregar:

JAVA_HOME=/usr/lib/jvm/jdk1.7
PATH=$JAVA_HOME/bin:$PATH export PATH JAVA_HOME
CLASSPATH=$JAVA_HOME/lib/tools.jar
CLASSPATH=.:$CLASSPATH
export PATH JAVA_HOME CLASSPATH


4. Para validar las lineas adicionadas en el archivo Profile, realice el Logout con su usuario y retorne al Prompt. Para verificar si esta funcionando, ejecute:

# echo $PATH

La salida debe de ser algo similar a:

    /usr/lib/jvm/jdk1.7/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin 


$ java -version

La salida debe ser algo parecido a esto:

    java version "1.7.0_03"
    Java(TM) SE Runtime Environment (build 1.7.0_03-b04)
    Java HotSpot(TM) 64-Bit Server VM (build 22.1-b02, mixed mode) 


Con el Java ya instalado y funcionando, vamos a partir para la instalación del JBoss.

Ubuntu
1. Habilitando el "/etc/alternatives", ejecute:

$ sudo update-alternatives --install /usr/bin/java java /SEU/java/DIRECTORY/jre/bin/java 3

2. Cambiar la versión de Java utilizado con alternativas, ejecute:

$ sudo update-alternatives --config java

Obs: Verifique el numero de Java 1.7, y escriba en la opción de arriba.

3. Testeando nuestro Java 1.7, ejecute:

$ java -version * La salida debe de ser algo similar a:


    java version "1.7.0_03"
    Java(TM) SE Runtime Environment (build 1.7.0_03-b04)
    Java HotSpot(TM) 64-Bit Server VM (build 22.1-b02, mixed mode) 


Con el Java instalado y funcionando, vamos a partir para la instalación del JBoss.

Instalando el JBoss AS 7

La instalación del JBoss consiste, básicamente en descompactar el archivo "jboss-as-7.1.1.Final.tar.gz".

Como la instalación es simple, necesitamos atar bien para tener un ambiente fácil de administración y funcional.

1. Descompactar el JBoss:

$ tar -zxvf jboss-as-7.1.1.Final.tar.gz -C /usr/local
$ mv jboss-as-7.1.1.Final jboss


2. Entendiendo la arquitectura y el funcionamiento:

El JBoss es iniciado con el Script "standalone.sh" localizado dentro de la carpeta "bin", que usted acaba de descompactar. Este Script consulta los archivos de configuración contenidos dentro del directorio "jboss/standalone/configuration" para iniciar el Servidor.

Dare un 'overview' de los principales directorios que vamos a utilizar.

Directorio: jboss/standalone

- Contiene las principales configuraciones del Servidor, dentro de ellas los archivos:

    Guardan configuraciones de (IP - PUERTO - PROTOCOLO, ETC):
    standalone-full.xml
    standalone.xml
    standalone-full-ha.xml
    standalone-ha.xml
    standalone_xml_history 


- Guardan las configuraciones de usuarios de JBoss:

    application-roles.properties
    logging.properties
    application-users.properties
    mgmt-users.properties 



- jboss/standalone/deployments : Contendrá sus proyectos! Todos los archivos ".war" colocados en este directorio, sufrirán el Deploy automáticamente.


- jboss/standalone/log : Contendrá el Log de Boot y ejecución del Servidor JBoss.


- jboss/standalone/lib : Contendrá las extensiones cargadas por el Servidor.


- jboss/standalone/tmp : Contendrá los archivos temporales generado por la aplicación y por el Servidor.


Directorio: jboss/modules

Contiene los libs (módulos). Vamos a adicionar los Drivers de nuestra aplicación dentro de este directorio.

El formato utilizado por este directorio es: modules/<oracle . exemplo>/jdbc/main/

Dentro de este directorio deberá contener el "modulo.jar" + la instrucción en XML para utilización de este modulo, en formato "module.xml". Vamos a tratar este punto con mas detalle.

Directorio: jboss/bin
[code]

Contiene los binarios para inicio de administración de su Servidor JBoss.

En este articulo, usaremos los Scripts de abajo:
[code]
    add-user.sh : Adicionar usuarios para acceder a JBoss;
    standalone.sh : Script de inicialización del Servidor de JBoss. 


3. Configuración del usuario JBoss (sistema)

El proceso de instalación del JBoss es relativamente simple, pero necesitamos algunos pasos, así que al terminar de descompactar el JBoss, quedará como usuario root y grupo root, entonces manos a la obra.

Cree el usuario con los siguientes parámetros:

jboss:x:<UUID>:<GUID>::/usr/local/jboss:/bin/nologin


Despues, agregar los debidos permisos:

# chown -R jboss.jboss /usr/local/jboss
# chmod -R 750 /usr/local/jboss


4. Testeando el JBoss

Entramos al directorio "jboss/bin", y ejecutamos el Script "standalone.sh"

# ./standalone.sh

Despues de ejecutar, pedera su terminal, pues el dejara el proceso ejecutando en la termina, entonces, abrimos otro terminal y ejecutamos:

# netstat -nlp | grep java

Usted deberá de recibir una respuesta similar a esta:

    tcp   0  0 127.0.0.1:9990   0.0.0.0:*     LISTEN   5389/java
    tcp   0  0 127.0.0.1:9999   0.0.0.0:*     LISTEN   5389/java
    tcp   0  0 127.0.0.1:8080   0.0.0.0:*     LISTEN   5389/java
    tcp   0  0 127.0.0.1:4447   0.0.0.0:*     LISTEN   5389/java 


Teniendo esta respuesta, accedemos al JBoss via browser utilizando la URL: http://localhost:8080

Realizado esto, vamos a Administrar Consola, sera solicitado su usuario y contraseña.

5. Configurando nuestro usuario

Accedemos al directorio "/usr/local/jboss/bin" y ejecutamos el "add-user.sh". Seguimos paso a paso para crear un usuario en JBoss.

Obs.: Para administrar el JBoss, cree un usuario del tipo: Management User

Despues de crear el usuario, accedemos al browser y accedemos de nuevo al sistema con nuestro usuario y contraseña.

Creando un Control para el Servidor JBoss.
Bien, tenemos nuestro JBoss instalado.

Ya podemos el Deploy en nuestras aplicaciones, pero como buen analista no podemos dejar que el Servidor quede 'jugado'.

Toda ves que necesite iniciar el Servidor, voy a tener que entrar en el directorio BIN y ejecutar el "standalone.sh"?, NO.

Vamos a crear una especie de Daemond del Servidor para verificar el status y dejar el PID guardado en algun lugar, donde podemos encontrar rápidamente.

Obs.: Voy a facilitar el Script de inicialización, el mismo puede ser usado y modificado.


#
#SCRIPT RESPONSABLE POR INICIALIZAR EL SERVIDOR DE JBOSS
#
#
#
 
export TERM=vt100
 
STAT=$1
 
if [ -e /var/log/servidorjboss.log ]
then
        sleep 0
else
        touch /var/log/servidorjboss.log
fi
 
if [ -e /var/run/jboss/jboss.pid ]
then
        sleep 0
else
        touch /var/run/jboss/jboss.pid
        chmod 750 /var/run/jboss/jboss.pid
fi
 
 
LOGFILE="/var/log/servidorjboss.log"
STANDALONE="/usr/local/jboss/bin/standalone.sh"
PIDFILE="/var/run/jboss/jboss.pid"
VAR(){
 
        VERPID=`cat $PIDFILE | xargs`
        CONF=`cat $PIDFILE | wc -l`
 
 
 
}
 
llamajboss() {
 
        VAR
 
[ $CONF -gt 0  ] && verjboss
 
if [ $CONF = 0 ]
then
        MSG01="INICIANDO SERVIDOR JBOSS"
        $STANDALONE >/dev/null &
        JBOSS_PID01=$!
        sleep 2
        echo $JBOSS_PID01 >> $PIDFILE
        MSG02="SERVIDOR JBOS INICIADO"
        echo $MSG01 >> $LOGFILE
        echo $MSG02 >> $LOGFILE
else
        MSGERRO="ERROR DESCONOCIDO AL INICIAR EL SERVIDOR JBOSS"
        echo $MSGERRO >> $LOGFILE
fi
}
#
#
#
#
#FUNCION DE PARAR EL JBOSS
parajboss() {
VAR
if [ $CONF = 0 ]
then
        echo "NO EXISTE NINGUN SERVIDOR JBOSS EJECUTANDOSE"
        exit 0
 
else
        echo -E "Localizando servicio Jboss"
        echo -E "Servidor Jboss encontrado, parando el servicio"
 
        for i in $VERPID; do kill -9 $i;done
        echo -E "Servidor parado"
        rm -rf  $PIDFILE
 
        MSG001="PARANDO SERVIDOR JBOSS"
        MSG001="SERVIDOR JBOSS PARADO"
        echo $MSG001 >> $LOGFILE
        echo $MSG001 >> $LOGFILE
        exit 0
fi
 
}
#
#
#
#FUNCION DE VERIFICACIÓN DE STATUS DEL JBOSS
verjboss() {
VAR
 
if [ $CONF = 0 ]
then
 
        echo "NO EXISTE NINGUN SERVIDOR JBOSS EJECUTANDOSE"
        exit 0
 
else
        echo "YA EXISTE SERVIDOR JBOSS EJECUTANDOSE : $VERPID" | xargs
        exit 0
fi
}
 
case $STAT in
        start ) llamajboss ;;
        stop ) parajboss ;;
        status ) verjboss ;;
        *) echo "OPCION INCORRECTA UTILIZE (start|stop|status)" ;;
esac


1º Paso - Guardamos el Script dentro del directorio "bin" del JBoss y creamos un link para el directorio "init.d":

# ln -s /usr/local/jboss/bin/jbossd /etc/init.d/jbossd

Realizado esto, testeamos el Script:

# service jbossd status

* NO EXISTE NINGUN SERVIDOR JBOSS EJECUTANDOSE.

# service jbossd start

INICIANDO SERVIDOR JBOSS
SERVIDOR JBOSS INICIADO


# service jboosd status

YA EXISTE SERVIDOR JBOSS EJECUTANDOSE: <PID DEL PROCESO>


2º Paso - Realizado el Script de inicialización, vamos a utilizarlo de manera simple para llamar al JBoss cuando su servidor ejecute el reboot, y precisa ser apagado.

# cd /usr/local/jboss/bin
# touch MTjboss
# echo -E ". /usr/local/jboss/bin/jbossd start" > MTjboss


Verificamos en que nivel de ejecución esta nuestra maquina:

# runlevel
# ln -s MTjboss /etc/rc.<SEU RUNLEVEL>/S96jbossd
# ln -s MTjboss /etc/rc.<SEU RUNLEVEL>/K96jbossd


Realizado esto, ya tenemos nuestro ambiente 'armado'

Habilitando módulos, Drivers y Data Sources en JBoss.
Bien, vamos a comenzar a modular nuestro JBoss AS 7 para nuestras aplicaciones.

Por ejemplo, si su API realiza una conección a una Base Oracle para consultar, o escribir datos, el JBoss no va a ofrecer soporte para su API, en caso que usted no disponga del Driver para realizar esta conección.

En este capitulo estare facilitanco un ejemplo de instalación del Driver Oracle.

Como vimos en el Overview del JBoss, el directorio "jboss/modules" contiene los libs (módulos). Dentro de este directorio utilizamos la siguiente estructura:

jboss/modules/com/<SU MODULO>/main/ - A pasta main deve conter o seu módulo no formato .jar.


1º Paso : Crear los directórios

Para configurar una base de manera adecuada en el JBoss AS 7, es necesario agregar el Driver JDBC como un módulo.

Para realizar este paso, creamos el directorio para colocar el driver del Oracle:

# mkdir jboss/modules/com/oracle/ojdbc6/main

Descargamos el modulo en el link: Oracle.com - JDBC

Copiamos el Driver Oracle (ojdbc6.jar) para el directorio recien creado, creamos un archivo "module.xml" con el siguiente contenido:


<module xmlns="urn:jboss:module:1.0" name="com.oracle.ojdbc6">
      <resources>
        <resource-root path="ojdbc6.jar">
      </resource-root></resources>
      <dependencies>
        <module name="javax.api">
      </module></dependencies>
</module>


2º Paso - Editamos el archivo "$JBOSS_HOME/standalone/configuration/standalone.xml", en el modulo Standalone, en el archivo "$JBOSS_HOME/domain/configuration/domain.xml" en modo Domain.

Procure por la linea<drivers> que es 'hijo' de <subsystem xmlns=”urn:jboss:domain:datasources:1.0″> y añadir el siguiente contenido dentro de los tags <drivers>…</drivers>:

<driver name="oracle" module="com.oracle.ojdbc6">
      <xa-datasource-class>
        oracle.jdbc.OracleDriver
      </xa-datasource-class>
</driver>

3º Paso - Cree un 'datasource' en este mismo XML:

<datasource jndi-name="java:jboss/datasources/VIVAOLINUXDS" pool-name="OracleDS" enabled="true" jta="true" use-java-context="true" use-ccm="true">
      <connection-url>jdbc:oracle:thin:@localhost:1521:oradb1</connection-url>
      <driver>oracle</driver>
      <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
      <pool>
        <prefill>true</prefill>
        <min-pool-size>0</min-pool-size>
        <max-pool-size>20</max-pool-size>
      </pool>
      <security>
        <user-name>SEU_USUARIO_BANCO</user-name>
        <password>SUA_SENHA_SECRETA</password>
      </security>
</datasource>

Obs.: El parametro 'use-java-context', se ha colocado como 'false', hara con que el nombre JNDI quede global (disponible externamente). El 'use-ccm' habilita el Cached Connection Manager.

Para configuraciones de aislamiento de transacciones, podemos tener los siguientes posibles valores.:

TRANSACTION_READ_UNCOMMITTED,TRANSACTION_READ_COMMITTED,TRANSACTION_REPEATABLE_READ,TRANSACTION_SERIALIZABLE, TRANSACTION_NONE 


Para mayores informaciones sobre el nivel de aislamiento, de un vistazo a este link: Wikipedia.org - Isolation

Obs.: En el grupo, el perfil igual a 'true' ya realiza las conexiones y llena el grupo. El 'mix-pool-size' y el 'max-pool-size' definen el numero minimo y maximo de conexiones en el Pool o Grupo.

Para mas parametros, consule el XSD del datasource:

$JBOSS_HOME/docs/schema/jboss-as-datasources_1_0.xsd


Inicie el JBoss y aparecera el siguiente mensaje en el archivo de Log:

    [org.jboss.as.connector.subsystems.datasources] (Controller Boot Thread) Deploying JDBC-compliant driver class oracle.jdbc.OracleDriver (version 11.2)
    2 ...
    3 [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-1) Bound data source 1 


. . . Su modulo ya esta compilado y listo para utilizarlo.

Lo utilizado arriba, va a servir de modelo para los otros módulos.

Modificando Configuraciones de Red en el JBoss

El JBoss, por defecto, trabaja utilizando el Localhost en sus archivos de configuracion.

Podemos modificar estas configuraciones, inclusive el puerto que el programa ira a utilizar.

Accedemos al directorio "jboss/standalone/configuration/", y ejecutamos:

# grep localhost * 


standalone.xml:            <wsdl-host>${jboss.bind.address:localhost}</wsdl-host>
standalone.xml:            <inet-address value="${jboss.bind.address.management:localhost}"/>
standalone.xml:            <inet-address value="${jboss.bind.address:localhost}"/>
standalone.xml:            <inet-address value="${jboss.bind.address.unsecure:localhost}"/>


Obs.: Como estamos instalando el JBoss de cero la salida del comando de arriba sera mayor.

# vim standalone.xml

Para substituir todas las ocurrencias de Localhost para su IP, ejecute:

:%s/localhost/SEUIP/g

Realizado esto su JBoss ya esta respondiendo a su IP.