Método 4 - Integración usando WrapperJarApp (Windows)

Descripción

El cuarto y último método es usar la clase helper WrapperJarApp para iniciar la aplicación. Esta es otra manera fácil de integrar el Wrapper, cuando la aplicación ya está configurada para ejecutarse como un archivo ejecutable (jar).

Sin embargo, hay algunas cosas que se deben tener en cuenta cuando se utiliza este método. Cuando el Wrapper apaga la máquina JVM, no hay ninguna notificación directa a la aplicación solicitando que la terminación se lleve acabo limpiamente. En otras palabras, el Wrapper apagará la máquina JVM invocando System.exit () desde la máquina JVM. Si la aplicación ha registrado su propio Shutdown Hook, este será invocado, dándole a la aplicación una oportunidad que se apague limpiamente. Por otro lado si, el Shutdown Hook no está registrado, la aplicación se cerrará repentinamente de la misma manera como cuando utiliza CTRL-C desde la consola (ventana de comandos). En ambos casos, con o sin un Shutdown Hook, se generará el mismo comportamiento, es decir como si la aplicación se ejecutara sin el Wrapper.

Cuando la integración se realiza con el método 4, la clase helper WrapperJarApp sustituye a la clase principal de la aplicación. Esto le dá la oportunidad a la clase WrapperJarApp de inmediatamente iniciar el WrapperManager y registrar la máquina JVM con el Wrapper. La clase WrapperJarApp entonces administra toda la interacción con el Wrapper, así como el ciclo de vida de una aplicación. Cuando el Wrapper envía un mensaje a la máquina JVM a través del WrapperManager el manifiesto de jar es inspeccionado y su clase principal configurada es invocada. La clase WrapperJarApp crea un nuevo cargador de clases que es capaz de cargar las clases desde el ejecutable jar, así como otros archivos jar que estén referenciados dentro de su archivo de manifiesto.

Se le ordena a la clase WrapperJarApp como iniciar la aplicación al pasar la ubicación absoluta o relativa del archivo ejecutable jar seguido de cualquier tipo de parámetros adicionales de la aplicación, al método principal de WrapperJarApp.

Instrucciones Detalladas

Esta sección le guiará a través de una explicación detallada de cómo configurar a JBoss para funcionar desde el interior del Wrapper. La mayoría de las otras aplicaciones desplegadas como archivos ejecutables de Java (jars) puede ser integrada siguiendo los mismos pasos.

Instalar JBoss

Este tutorial inicia con una instalación limpia de JBoss. En esta ocasión usamos "JBoss EAP 7.0.0", por lo que los pasos exactos pueden ser ligeramente diferentes dependiendo de la versión que se tenga instalada. Después de descargar a JBoss, extraiga los archivos en un directorio. En este tutorial, utilizaremos la carpeta D:\JBoss. Luego, cree las siguientes carpetas:

D:\JBoss\lib
D:\JBoss\conf
D:\JBoss\logs

Instalar Archivos del Wrapper

Después de haber descargado al Wrapper, extraiga los archivos en una carpeta, que aquí será referenciada como {WRAPPER_HOME}. Hay cuatro directorios que se deben configurar para poder utilizar el Wrapper.

Directorio bin

El primer paso es copiar los siguientes archivos en el directorio bin de JBoss:

{WRAPPER_HOME}\bin\wrapper.exe
{WRAPPER_HOME}\src\bin\App.bat.in
{WRAPPER_HOME}\src\bin\InstallApp-NT.bat.in
{WRAPPER_HOME}\src\bin\UninstallApp-NT.bat.in

Cambie el nombre de los tres archivos batch para que el nombre de su aplicación sea de la siguiente manera. Asegúrese de extraer las extensiones .in para que todos los archivos terminen en .bat.

(Dependiendo de cómo esté configurado el explorador de archivos en su computadora, puede ser posible que usted no pueda ver las extensiones del archivo.)

Ahora debería tener:

{JBOSS_HOME}\bin\myJBoss.bat
{JBOSS_HOME}\bin\InstallJBoss.bat
{JBOSS_HOME}\bin\UninstallJBoss.bat

El archivo wrapper.exe es el ejecutable del Wrapper. Los tres archivos batch se utilizan para ejecutar JBoss en una consola, y para instalar y desinstalar la aplicación como un servicio de Windows.

Estos archivos batch no necesitan modificaciones. Se asume que el archivo wrapper.conf será ubicado dentro de un directorio conf un nivel arriba, ../conf/wrapper.conf. Si desea colocar el archivo wrapper.conf en otro lugar, los tres archivos batch requerirán una modificación apropiada.

Directorio lib

Copie los archivos en el directorio lib de JBoss:

{WRAPPER_HOME}\lib\wrapper.dll
{WRAPPER_HOME}\lib\wrapper.jar

El archivo wrapper.dll es un archivo de librería nativa requerido por la porción del Wrapper que se ejecuta dentro de la máquina JVM. El archivo wrapper.jar contiene todas las clases del Wrapper.

Directorio conf

El Wrapper requiere de un archivo de configuraciones "wrapper.conf" para cada aplicación. La ubicación estándar para este archivo está en un directorio conf que se encuentra en el directorio principal (home) de cada aplicación. Por favor copie el siguiente archivo de plantilla wrapper.conf.in en el conf directory de JBoss.

{WRAPPER_HOME}\src\conf\wrapper.conf.in

Cambie el nombre del archivo y asegúrese de remover la extensión .in para que el nombre del archivo sea wrapper.conf.

Usted debe tener ahora:

{JBOSS_HOME}\conf\wrapper.conf

Si desea cambiar la ubicación del archivo de configuración wrapper.conf, usted puede hacerlo. Sin embargo, tendrá que modificar los archivos que previamente copió en el directorio bin de arriba para reflejar la nueva ubicación.

Directorio logs

El archivo de configuración por defecto wrapper.conf colocará un archivo llamado wrapper.log en el directorio logs de JBoss.

{JBOSS_HOME}\logs

Si desea cambiar la ubicación del archivo wrapper.log, tendrá que editar el archivo wrapper.conf y modificar la propiedad wrapper.logfilepara reflejar la nueva ubicación.

Línea de Comandos Java

La línea de comandos Java de un archivo ejecutable jar es muy simple. En el caso de JBoss, solo se necesita ir al directorio y ejecutar:

java -jar D:\JBoss\jboss-modules.jar

Cualquier argumento se pasaría de la siguiente manera:

java -jar D:\JBoss\jboss-modules.jar arg1 arg2 arg3

Modificación del Archivo "wrapper.conf"

Para utilizar la línea de comandos Java con el Wrapper, tenemos que dividir los componentes de la línea de comandos en un archivo de configuración. Abra el archivo wrapper.conf en un editor para hacer cambios como se muestra a continuación.

NOTA

Donde se mencionan las propiedades, se proporcionan vínculos sobre sus descripciones. Tome un momento para revisar las descripciones de cualquier propiedad que se modifique. En muchos casos hay más detalles sobre su uso y que a veces no son mencionados aquí.

Java Ejecutable

Primero se necesita extraer el Java ejecutable y asignar la ubicación de la ruta a la propiedad wrapper.java.command:

wrapper.java.command=java

Archivo jar del Wrapper

El Wrapper requiere que su propiedad wrapper.jar sea especificada:

wrapper.jarfile=/usr/lib/jboss/lib/wrapper.jar

ADVERTENCIA

La propiedad wrapper.jarfile se introdució en la versión 3.5.55 del Wrapper. Si usa una versión más antigua del Wrapper, es necesario incluir wrapper.jar en la ruta de la clase (classpath):

wrapper.java.classpath.1=D:\apache-tomcat-9.0.0.M13\lib\wrapper.jar

Después, los índices de los siguientes elementos de classpath deben ajustarse para no repetir la propiedad wrapper.java.classpath.1.

Classpath

El siguiente paso es el classpath, que se configura usando las propiedades wrapper.java.classpath.<n>. En realidad Java no permite especificar dicho classpath cuando se ejecuta con el parámetro -jar, pero este método de integración funciona un poco diferente con el Wrapper.

wrapper.java.classpath.1=D:\JBoss\jboss-modules.jar

Clase Principal (Main Class)

Cuando se usa el Wrapper con la clase helper WrapperJarApp, Java no ejecuta el archivo jar directamente. Es necesario especificar la clase helper como la clase principal de la aplicación. La clase principal ejecutada por Java al iniciar se especifica usando la propiedad wrapper.java.mainclass como sigue:

wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperJarApp

Parámetros de la Aplicación

Los parámetros de las aplicaciones son configurados usando las propiedades wrapper.app.parameter.<n>. En este caso, la línea de comandos para iniciar JBoss requiere algunos parámetros de aplicación. Es necesario notificar a la clase helper WrapperJarApp cual jar debe ejecutar. Esto se hace de la siguiente manera:

wrapper.app.parameter.1=D:\JBoss\jboss-modules.jar
wrapper.app.parameter.2=-mp
wrapper.app.parameter.3=D:\JBoss\modules
wrapper.app.parameter.4=-jaxpmodule
wrapper.app.parameter.5=javax.xml.jaxp-provider
wrapper.app.parameter.6=org.jboss.as.standalone
wrapper.app.parameter.7=-Djboss.home.dir=D:\JBoss
wrapper.app.parameter.8=-Djboss.server.base.dir=D:\JBoss\standalone

Parámetros Adicionales de Java

Los parámetros adicionales de Java se especifican usando las propiedades wrapper.java.additional.<n>. Algunos parámetros deben ser configurados para que JBoss inicie correctamente.

wrapper.java.additional.1=-D"[Standalone]"
wrapper.java.additional.2=-server
wrapper.java.additional.3=-XX:+UseCompressedOops
wrapper.java.additional.4=-Xms1303M
wrapper.java.additional.5=-Xmx1303M
wrapper.java.additional.6=-Djava.net.preferIPv4Stack=true
wrapper.java.additional.7=-Djboss.modules.system.pkgs=org.jboss.byteman
wrapper.java.additional.8=-Djava.awt.headless=true
wrapper.java.additional.9=-Dorg.jboss.boot.log.file=D:\JBoss\standalone\log\server.log
wrapper.java.additional.10=-Dlogging.configuration=file:D:\JBoss\standalone\configuration\logging.properties
wrapper.java.additional.11=-Dorg.tanukisoftware.wrapper.WrapperManager.mbean=false
wrapper.java.additional.12=-Djava.util.logging.manager=org.jboss.logmanager.LogManager
wrapper.java.additional.13=-Dorg.jboss.logging.Logger.pluginClass=org.jboss.logging.logmanager.LoggerPluginImpl

Ruta de la Librería

Se debe configurar una propiedad más para poder usar el Wrapper. El Wrapper hace uso de una librería nativa para controlar las interacciones con el sistema. Este archivo de librería wrapper.dll necesita ser especificado en la ruta de librería que se envía a la máquina JVM.

JBoss no tiene librerías nativas, pero si las tuviera, sería necesario especificar los directorios donde se ubicarían. La ruta de la librería se establece usando las propiedades wrapper.java.library.path.<n>.

wrapper.java.library.path.1=D:\JBoss\lib

Ponerlo en Práctica

Poniendo todo junto, obtenemos lo siguiente:

wrapper.java.command=java

wrapper.jarfile=D:\JBoss\lib\wrapper.jar

wrapper.java.classpath.1=D:\JBoss\jboss-modules.jar

wrapper.java.library.path.1=D:\JBoss\lib

wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperJarApp

wrapper.java.additional.1=-D"[Standalone]"
wrapper.java.additional.2=-server
wrapper.java.additional.3=-XX:+UseCompressedOops
wrapper.java.additional.4=-Xms1303M
wrapper.java.additional.5=-Xmx1303M
wrapper.java.additional.6=-Djava.net.preferIPv4Stack=true
wrapper.java.additional.7=-Djboss.modules.system.pkgs=org.jboss.byteman
wrapper.java.additional.8=-Djava.awt.headless=true
wrapper.java.additional.9=-Dorg.jboss.boot.log.file=D:\JBoss\standalone\log\server.log
wrapper.java.additional.10=-Dlogging.configuration=file:D:\JBoss\standalone\configuration\logging.properties
wrapper.java.additional.11=-Dorg.tanukisoftware.wrapper.WrapperManager.mbean=false
wrapper.java.additional.12=-Djava.util.logging.manager=org.jboss.logmanager.LogManager
wrapper.java.additional.13=-Dorg.jboss.logging.Logger.pluginClass=org.jboss.logging.logmanager.LoggerPluginImpl

wrapper.app.parameter.1=D:\JBoss\jboss-modules.jar
wrapper.app.parameter.2=-mp
wrapper.app.parameter.3=D:\JBoss\modules
wrapper.app.parameter.4=-jaxpmodule
wrapper.app.parameter.5=javax.xml.jaxp-provider
wrapper.app.parameter.6=org.jboss.as.standalone
wrapper.app.parameter.7=-Djboss.home.dir=D:\JBoss
wrapper.app.parameter.8=-Djboss.server.base.dir=D:\JBoss\standalone

Observe que mientras estas configuraciones funcionarán correctamente en nuestra máquina de test, depende altamente de la estructura de directorios y la plataforma. Es una gran ventaja que el Wrapper siempre establece la ubicación del directorio de trabajo del archivo wrapper.exe y hace uso de una única variable de entorno, y somos capaces de modificar las propiedades anteriores de tal manera que sean completamente independientes de plataforma y máquina:

set.JBOSS_HOME=D:\JBoss
wrapper.java.command=java

wrapper.jarfile=..\lib\wrapper.jar

wrapper.java.classpath.1=..\jboss-modules.jar

wrapper.java.library.path.1=..\lib

wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperJarApp

wrapper.java.additional.1=-D"[Standalone]"
wrapper.java.additional.2=-server
wrapper.java.additional.3=-XX:+UseCompressedOops
wrapper.java.additional.4=-Xms1303M
wrapper.java.additional.5=-Xmx1303M
wrapper.java.additional.6=-Djava.net.preferIPv4Stack=true
wrapper.java.additional.7=-Djboss.modules.system.pkgs=org.jboss.byteman
wrapper.java.additional.8=-Djava.awt.headless=true
wrapper.java.additional.9=-Dorg.jboss.boot.log.file=%JBOSS_HOME%\standalone\log\server.log
wrapper.java.additional.10=-Dlogging.configuration=file:%JBOSS_HOME%\standalone\configuration\logging.properties
wrapper.java.additional.11=-Dorg.tanukisoftware.wrapper.WrapperManager.mbean=false
wrapper.java.additional.12=-Djava.util.logging.manager=org.jboss.logmanager.LogManager
wrapper.java.additional.13=-Dorg.jboss.logging.Logger.pluginClass=org.jboss.logging.logmanager.LoggerPluginImpl

wrapper.app.parameter.1=..\jboss-modules.jar
wrapper.app.parameter.2=-mp
wrapper.app.parameter.3=%JBOSS_HOME%\modules
wrapper.app.parameter.4=-jaxpmodule
wrapper.app.parameter.5=javax.xml.jaxp-provider
wrapper.app.parameter.6=org.jboss.as.standalone
wrapper.app.parameter.7=-Djboss.home.dir=%JBOSS_HOME%
wrapper.app.parameter.8=-Djboss.server.base.dir=%JBOSS_HOME%\standalone

Propiedades de Servicios de Windows

(Consulte:Plataformas Compatibles para Windows)

El paso final es configurar las Propiedades de Servicios de Windows. Nos limitaremos a establecer las propiedades que se deben modificar, pero hay varias más disponibles. Consulte la documentación para obtener información sobre su uso. Los valores sugeridos para estas variables se muestran a continuación.

wrapper.ntservice.name=jboss
wrapper.ntservice.displayname=JBoss EAP
wrapper.ntservice.description=JBoss EAP

INFO

Las propiedades son configuradas en el archivo wrapper.conf que se encuentra en la carpeta conf de la instalación del Wrapper.

Probarlo

JBoss se inicia simplemente al ejecutar el archivo batch bin\myJBoss.bat. Debido a la manera en la que el Wrapper establece su directorio actual, no es necesario ejecutar este archivo batch desde el directorio bin. Por favor, intente ejecutar la aplicación como una aplicación de consola para verificar la configuración antes de intentar ejecutarla como un servicio.

Al iniciar por primera vez, JBoss creará sus archivos de configuración en el directorio principal del usuario actual. Tenga en cuenta que lo más probable es que sea un lugar diferente cuando se ejecuta como un servicio en comparación como cuando se ejecuta en una ventana de consola.

Felicidades, su aplicación debe estar ahora en marcha y funcionando.

Si experimenta algún problema, consulte la sección Solución de problemas para recibir ayuda y detectar el problema.