En JBoss EAP 6, se puede hacer una configuración de modulos en el core de JBoss que contengan librerías que pueden ser utilizadas por todos los proyectos.
En ocasiones, cuando se tienen varias aplicaciones en un mismo servidor JBoss, puede ser que varias aplicaciones utilicen las mismas librerías y que puedan ocasionarse conflictos por librerías duplicadas.
JBoss resuelve los conflictos asignando prioridades en el classloader para la carga de las clases, que se indica a continuación:
• La prioridad máxima es para los módulos.
• Después, las librerias indicadas como dependencias en el MANIFEST.MF del archivo empaquetado, o en el archivo jboss-deployment-structure.xml.
• A continuación, las librerías empaquetadas en la propia aplicación, tales como las clases contenidas en WEB-INF/lib o WEB-INF/classes.
• Por último, las librerías empaquetadas en el mismo archivo EAR (en el directorio lib del EAR).
Generar módulos en el core de JBoss tiene sus ventajas:
• Será lo primero que cargará el classloader.
• Como se encuentran en el core de JBoss, es visible para cuando el servidor se arranca en modo domain o standalone, útil para cuando se utiliza el servidor en cluster.
• Los módulos son utilizados bajo demanda, haciendo mas eficiente el uso de recursos.
Instalar el módulo:
Supongamos que queremos añadir el jar de spring para todas nuestras aplicaciones que residirán en nuestro servidor.
• Nos ubicamos en la ruta $JBOSS_HOME\\modules\system\layers\base\org\
• Creamos el directorio org\springframework\main
• En este directorio, copiamos el jar spring2.5.6.jar
• Creamos el archivo module.xml, indicando el nombre del módulo, el jar y en caso de ser necesario, las dependencias. El archivo tendrá el siguiente código:
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="org.springframework">
<properties>
<property name="jboss.api" value="unsupported"/>
</properties>
<resources>
<resource-root path="spring-2.5.6.jar"/>
<!-- Insert resources here -->
</resources>
</module>
Con esto quedaría generado el módulo listo para ser utilizado.
Con los avances tecnológicos, no podemos quedarnos atrás. Este blog nace por la necesidad de renovarse después de trabajar en un sitio que no utiliza lo último en tecnología.
martes, 7 de octubre de 2014
ClassLoader de JBoss EAP 6
Etiquetas:
administracion JBoss,
ClassLoader,
EAP,
JBoss,
JBoss 6,
RedHat
martes, 20 de mayo de 2014
Creación de clusters en JBoss EAP, modo standalone
La generación de clusters en EAP es para tener alta disponibilidad del servicio. En JBoss EAP 6, no es necesario generar dos configuraciones de servidor JBoss para hacer clusters, pero si crear un nuevo archivo XML.
La generación de clusters en EAP es para tener alta disponibilidad del servicio. En JBoss EAP 6, no es necesario generar dos configuraciones de servidor JBoss para hacer clusters, pero si crear un nuevo archivo XML.
La configuración standalone en cluster es útil para entornos de desarrollo, debido a que solo puede contener un perfil de configuración. Por lo general, se utiliza el archivo standalone-ha.xml. Es buena páctica hacer un respaldo del archivo original antes de hacer modificaciones.
Con la configuración standalone, se pueden hacer cluster con los equipos ejecutandose en el mismo servidor o residiendo en distintos servidores.
Los clusters se suelen utilizar con balanceadores de carga, y en JBoss EAP 6, el balanceador se hace con apache server, pero eso se verá en otra entrada.
Al primer archivo, lo llamaremos standalone-ha-node1.xml
En este archivo, revisaremos la etiqueta <interfaces>, que debe apuntar hacia la ip de nuestro servidor, en este caso, localhost (127.0.0.1)
<interfaces>
<interface name="management">
<inet-address value="${jboss.bind.address.management:127.0.0.1}"/>
</interface>
<interface name="public">
<inet-address value="${jboss.bind.address:127.0.0.1}"/>
</interface>
y en la parte de los sockets, lo dejamos sin cambios para el primer servidor:
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
Para el segundo server, crearemos otro archivo standalone-ha-node2.xml. Solo que en este configuraremos un offset de puertos en el socket binding:
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:100}">
Asi mismo, para evitar conflicto de puertos, en el archivo standalone-ha-node2.xml cambiaremos los puertos de administración:
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:100}">
<socket-binding name="management-native" interface="management" port="${jboss.management.native.port:9999}"/>
<socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
<socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9443}"/>
Servidor 1
D:\programas\jboss-eap-6.2\bin>standalone.bat --server-config=standalone-ha-node1.xml
Servidor 2
D:\programas\jboss-eap-6.2\bin>standalone.bat --server-config=standalone-ha-node2.xml
Podremos ver el servidor 1 en el puerto 8080:
y el servidor 2 en el puerto 8180:
Y con esto podremos ver dos servidores en clúster, donde podremos desplegar las aplicaciones con un balanceador de carga, para lo cuál apache nos servirá, y una aplicación distribuida en clúster, pero eso será tema de otra entrada.
Etiquetas:
administracion JBoss,
cluster,
cluster standalone,
EAP,
JBoss,
RedHat,
standalone
martes, 13 de mayo de 2014
JBoss: uso del CLI (Command Line Interface)
La interfaz de linea de comando de JBoss (CLI) se encuentra en la ubicacion $JBOSS_HOME/bin. Para iniciarlo, damos al comando jboss-cli. En windows es jboss-cli.bat y linux ./jboss-cli.sh.
Una vez que ejecutamos el comando, la consola nos responde que no estamos conectados aun:
You are disconnected at the moment. Type 'connect' to connect to the server or 'help' for the list of supported commands.
[disconnected /]
Damos al comando connect. Si damos el comando sin especificar IP, se conectará al servidor en el que se encuentra, sin embargo, especificando la IP, se conectará al servidor que hayamos especificado.
connect 127.0.0.1
Una vez que ejecutamos el comando, la consola nos responde que no estamos conectados aun:
You are disconnected at the moment. Type 'connect' to connect to the server or 'help' for the list of supported commands.
[disconnected /]
Damos al comando connect. Si damos el comando sin especificar IP, se conectará al servidor en el que se encuentra, sin embargo, especificando la IP, se conectará al servidor que hayamos especificado.
connect 127.0.0.1
[standalone@127.0.0.1:9999 /]
Nota: El servidor al que queremos conectarnos debe estar arrancado para que el cliente se pueda conectar. jboss-cli no arranca el servidor.
Una vez conectados al servidor, podemos reiniciarlo con el comando:
[standalone@127.0.0.1:9999 /] reload
O podemos detenerlo con el comando shutdown
[standalone@127.0.0.1:9999 /] shutdown
[disconnected /]
El cual enviará la señal de shutdown al servidor al que estábamos conectados.
También podemos hacer un snapshot de la configuración actual con :take-snapshot
[standalone@127.0.0.1:9999 /] :take-snapshot
{
"outcome" => "success",
"result" => "/opt/jboss-6/standalone/configuration/standalone_xml_history/snapshot/20140505-122238889standalone.xml"
}
Listamos los snapshots que hemos guardado con el comando :list-snapshots
[standalone@127.0.0.1:9999 /] :list-snapshots
{
"outcome" => "success",
"result" => {
"directory" => "/opt/jboss-6/standalone/configuration/standalone_xml_history/snapshot",
"names" => [
"20140505-123643905standalone.xml",
"20140505-122238889standalone.xml"
]
}
}
Eliminamos un snapshot con :delete-snapshot
[standalone@127.0.0.1:9999 /] :delete-snapshot(name="20140505-123643905standalone.xml")
{"outcome" => "success"}
y para iniciar el servidor con una configuración de snapshot que hemos almacenado (20140505-122238889standalone.xml), arrancamos jboss de la siguiente manera:
[ejurado@localhost bin]$ ./standalone.sh --server-config=20140505-122238889standalone.xml
=================================================================
JBoss Bootstrap Environment
JBOSS_HOME: /opt/jboss-6
JAVA: /usr/java/jdk1.7.0_51/bin/java
JAVA_OPTS: -server -XX:+UseCompressedOops -Xms1303m -Xmx1303m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true
...
Etiquetas:
administracion JBoss,
CLI,
EAP,
JBoss,
JBoss 6,
RedHat,
snapshot jboss
martes, 6 de mayo de 2014
Creación de Datasources en JBoss EAP 6
Anteriormente, en versiones de JBoss 5.x y previas, el datasource se generaba con un archivo -ds.xml en el directorio de despliegue, donde se contenían los datasources. A partir de la version 6.x, la generación de los datasources se hace de manera distinta (debido en parte a que se puede arrancar el servidor en modo standalone y domain).
Para este ejemplo, usaremos una conexión de base de datos mysql, con el driver mysql-connector-java-5.1.30-bin.jar.
Al generar el datasource, se requieren de dos pasos:
1.- Instalar el driver en JBoss
2.- Generar el Datasource.
Instalar el driver en JBoss
Primero, hay que añadir el driver para que JBoss lo reconozca. Existen dos maneras de hacer esto, una es desplegar el jar como aplicación y la otra es añadirlo como modulo del core de JBoss.
Si lo añadimos como modulo del core de JBoss, tendremos la ventaja de que el classloader de JBoss serà lo primero que cargue, será visible para cuando el servidor se arranque en modo domain y standalone y seá utilizado bajo demanda de las aplicaciones, pero instalarlo es un poco mas complicado.
Si lo añadimos como aplicación es mucho más fácil y rápido instalarlo, pero solo será visible por las aplicaciones instaladas en el mismo servidor donde se está ejecutando el jar.
Instalando el driver como módulo core de JBoss.
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="com.mysql">
<properties>
<property name="jboss.api" value="unsupported"/>
</properties>
<resources>
<resource-root path="mysql-connector-java-5.1.30-bin.jar"/>
<!-- Insert resources here -->
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
<module name="javax.servlet.api" optional="true"/>
</dependencies>
</module>
Podemos observar que en la propiedad module le ponemos el nombre com.mysql, que es donde hemos ubicado nuestro driver en el directorio modules de JBoss.
En resource-root-path, va el nombre del driver.
Y en dependencies, las dependencias que sean necesarias.
Con esto, ya quedará instalado el jar como módulo del core de JBoss y el driver visible para el modo domain y/o standalone.
Creación de datasources.
Una vez que tenemos el driver de mysql como módulo del core de JBoss, accegdemos a la consola de adminsitración de JBoss ingresando en http://localhost:8080 e introducimos el usuario y password.
Entramos en profiles y damos a add.
Una vez que damos add, el editor guiado nos dara 3 pasos para configurar el datasource:
1. Nombrar el datasource:
2. Elegir el driver. Este será el que hemos configurado como modulo del core de JBoss.
Elegimos myssql
3.- Configurar los parametros de conexion,
Y con esto tenemos una configuración básica de datasources
Una vez configurado, debemos habilitarla seleccionando nuestro datasource y dando al boton enable. Nos saldrá una ventana de confirmación:
Esto modificara el archivo standaloneo .xml o domain.xml, dependiendo el modo en el que hayamos arrancado JBoss.
Una vez habilidado el datasource, podremos hacer un test de la conexion, dando a connection y test:
si todo va bien, nos saldrá lo siguiente:
Y con esto ya tenemos la conexion hecha con el datasource listo para ser utilizado por una conexión JNDI
Para este ejemplo, usaremos una conexión de base de datos mysql, con el driver mysql-connector-java-5.1.30-bin.jar.
Al generar el datasource, se requieren de dos pasos:
1.- Instalar el driver en JBoss
2.- Generar el Datasource.
Instalar el driver en JBoss
Primero, hay que añadir el driver para que JBoss lo reconozca. Existen dos maneras de hacer esto, una es desplegar el jar como aplicación y la otra es añadirlo como modulo del core de JBoss.
Si lo añadimos como modulo del core de JBoss, tendremos la ventaja de que el classloader de JBoss serà lo primero que cargue, será visible para cuando el servidor se arranque en modo domain y standalone y seá utilizado bajo demanda de las aplicaciones, pero instalarlo es un poco mas complicado.
Si lo añadimos como aplicación es mucho más fácil y rápido instalarlo, pero solo será visible por las aplicaciones instaladas en el mismo servidor donde se está ejecutando el jar.
Instalando el driver como módulo core de JBoss.
- Nos ubicamos en la ruta $JBOSS_HOME\\modules\system\layers\base\com\
- Allí creamos los directorios mysql\main
- Copiamos el jar mysql-connector-java-5.1.30-bin.jar en la ubicación $JBOSS_HOME\modules\system\layers\base\com\mysql\main
- Creamos un archivo module.xml, donde indicaremos el nombre del módulo, el jar y sus dependencias. Este archivo contendrá el siguiente código:
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="com.mysql">
<properties>
<property name="jboss.api" value="unsupported"/>
</properties>
<resources>
<resource-root path="mysql-connector-java-5.1.30-bin.jar"/>
<!-- Insert resources here -->
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
<module name="javax.servlet.api" optional="true"/>
</dependencies>
</module>
En resource-root-path, va el nombre del driver.
Y en dependencies, las dependencias que sean necesarias.
- En los archivos de configuración de standalone.xml y/o domain.xml, debemos agregar el módulo como driver, con el código que se muestra a continuación:
<drivers>
<driver name="h2" module="com.h2database.h2">
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
</driver>
<driver name="mysql" module="com.mysql">
<xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
</driver>
</drivers>
Creación de datasources.
Una vez que tenemos el driver de mysql como módulo del core de JBoss, accegdemos a la consola de adminsitración de JBoss ingresando en http://localhost:8080 e introducimos el usuario y password.
Entramos en profiles y damos a add.
Una vez que damos add, el editor guiado nos dara 3 pasos para configurar el datasource:
1. Nombrar el datasource:
2. Elegir el driver. Este será el que hemos configurado como modulo del core de JBoss.
Elegimos myssql
3.- Configurar los parametros de conexion,
Y con esto tenemos una configuración básica de datasources
Esto modificara el archivo standaloneo .xml o domain.xml, dependiendo el modo en el que hayamos arrancado JBoss.
Una vez habilidado el datasource, podremos hacer un test de la conexion, dando a connection y test:
si todo va bien, nos saldrá lo siguiente:
Y con esto ya tenemos la conexion hecha con el datasource listo para ser utilizado por una conexión JNDI
Etiquetas:
administracion JBoss,
Datasources,
EAP,
JBoss,
JBoss 6,
JNDI,
RedHat
lunes, 28 de abril de 2014
Agregar usuarios en JBOSS
Para administrar JBoss, es necesario crear usuarios. En JBoss 6 EAP, esto se hace con el comando add-usser, que se encuentra en la ruta JBOSS_HOME\bin\
Al ejecutar este comando, nos preguntará que tipo de usuario queremos agregar. Elegiremos administración.
Introducimos el usuario (en este caso sera usradmin) y el password (el password debe contener caracteres numéricos y al menos un caracter no alfanumérico), por ejemplo, p@55w0rd.
De momento no indicaremos grupos para el usuario, asi que damos enter.
Finalmente, el usuario se agrega y se almacena en el archivo mgmt-groups.properties (tanto para domain como standalone) ubicados en las rutas JBOSS_HOME\standalone\configuration y enaJBOSS_HOME\domain\configuration, almacenando el password en base64.
Arrancamos JBoss y entramos a la consola de administración, dando http://localhost:8080
Entramos en Administration console, y nos pedira el login y password para entrar. Entramos con el usuario que hemos creado
Y una vez iniciando sesión, podemos entrar a la consola de administración.
Etiquetas:
administracion JBoss,
agregar usuarios,
EAP,
JBoss,
RedHat
lunes, 14 de abril de 2014
Instalación de JBOSS EAP 6
JBoss es un servidor de aplicaciones implementado en Java, lo cual le da la ventaja de ser multiplataforma.
Existen dos maneras de descargar el JBoss. El que esta soportado por Red Hat (EAP) en la cual tienes que darte de alta, o el de la comunidad. Ambas versiones pueden encontrarse en el siguiente link:
http://www.jboss.org/jbossas/downloads/
Para su instalación se requiere del JDK 5 o superior.
JBoss es un paquete comprimido que no necesita mas que desempacarse para su instalación. Tan solo con descomprimir el paquete en la ubicación deseada, lo podemos tener listo para utilizarlo.
En JBoss EAP 6 (JBoss 7 de la comunidad) existen dos modos de iniciar el servidor: Standalone y Domain (del cuál se tratará en otra ocasión).
El modo standalone es el mas sencillo porque no requiere de mucha configuración adicional. Para probar la instalación arrancaremos el servidor en este modo ubicandonos en el directorio donde hemos instalado JBoss, en la carpeta bin y ahí encontraremos el archivo standalone.bat (para windows) o standalone.sh (para linux).
Si todo va bien, podemos ver en la ruta htttp://localhost:8080/ nuestro servidor iniciado:
Para detenerlo, solo tenemos que dar a ctrl + c y con eso se detendrá el servidor (También se puede hacer desde la interfaz CLI, pero eso se verá en otra entrada).
JBoss EAP 6 tiene muchas opciones y configuraciones interesantes, que poco a poco iremos tratando. Por mencionar algunas de las mas importantes:
Creación de módulos de dependencias desde el servidor.
Modo domain para grupos de servidores
interfaz CLI (Command Line Interface)
Consola de administración,
Entre varias mas, que iremos tratando poco a poco.
En una próxima entrada veremos la integración de JBoss con eclipse.
Existen dos maneras de descargar el JBoss. El que esta soportado por Red Hat (EAP) en la cual tienes que darte de alta, o el de la comunidad. Ambas versiones pueden encontrarse en el siguiente link:
http://www.jboss.org/jbossas/downloads/
Para su instalación se requiere del JDK 5 o superior.
JBoss es un paquete comprimido que no necesita mas que desempacarse para su instalación. Tan solo con descomprimir el paquete en la ubicación deseada, lo podemos tener listo para utilizarlo.
En JBoss EAP 6 (JBoss 7 de la comunidad) existen dos modos de iniciar el servidor: Standalone y Domain (del cuál se tratará en otra ocasión).
El modo standalone es el mas sencillo porque no requiere de mucha configuración adicional. Para probar la instalación arrancaremos el servidor en este modo ubicandonos en el directorio donde hemos instalado JBoss, en la carpeta bin y ahí encontraremos el archivo standalone.bat (para windows) o standalone.sh (para linux).
Si todo va bien, podemos ver en la ruta htttp://localhost:8080/ nuestro servidor iniciado:
Para detenerlo, solo tenemos que dar a ctrl + c y con eso se detendrá el servidor (También se puede hacer desde la interfaz CLI, pero eso se verá en otra entrada).
JBoss EAP 6 tiene muchas opciones y configuraciones interesantes, que poco a poco iremos tratando. Por mencionar algunas de las mas importantes:
Creación de módulos de dependencias desde el servidor.
Modo domain para grupos de servidores
interfaz CLI (Command Line Interface)
Consola de administración,
Entre varias mas, que iremos tratando poco a poco.
En una próxima entrada veremos la integración de JBoss con eclipse.
Etiquetas:
EAP,
instalación entorno de trabajo,
instalaciones,
JBoss,
JBoss 6,
RedHat
Ubicación:
Madrid, España
Suscribirse a:
Entradas (Atom)