World Map
Java Service Wrapper is the easiest way to make your product more reliable.
  • Free Trial
  • Buy Now

HowTo: Como ejecutar varias instancias del Wrapper en UNIX

Compatibilidad : 1.0.0
Ediciones :Edición ProfesionaEdición EstándarEdición de la Comunidad
Plataformas :Windows (No Soportado)Mac OSXLinuxIBM AIXFreeBSDHP-UXSolarisIBM z/OSIBM z/Linux

El Wrapper ha sido diseñado para hacer fácil ejecutar varias instancias en el mismo sistema sin necesidad de configuración especial. Esto se basa en las aplicaciones individuales que se ejecutan cada una en su propio directorio y/o con su propio nombre. Para evitar confusión, lo mejor es que cada uno tenga su propio nombre, incluso cuando se ejecutan en diferentes directorios.

Una aplicación en ejecución típica que se ha integrado con el Wrapper tendrá la siguiente estructura de directorios:

Estrutura típica del directorio del Wrapper:
$APP_HOME/
  bin/
    wrapper
    myapp.sh
    myapp.pid
  lib/
    libwrapper.so
    wrapper.jar
    myapp-*.jar
  conf/
    wrapper.conf
  logs/
    wrapper.log

En este ejemplo, myapp.sh ese una copia del script de shell que que se incluye en la distribución del Wrapper como $WRAPPER_HOME/src/bin/App.sh.in (en versiones anteriores del Wrapper, este archivo se llamaba 'sh.script.in'). Este script contiene un bloque de variables que deben configurarse para la aplicación de la siguiente manera:

Subconjunto de variables de configuración de script:
# Application
APP_NAME="myapp"
APP_LONG_NAME="My Application"

# Wrapper
WRAPPER_CMD="./wrapper"
WRAPPER_CONF="../conf/wrapper.conf"

# Location of the pid file.
PIDDIR="."

# When installing on On Mac OSX platforms, the following domain will be used to
#  prefix the plist file name.
PLIST_DOMAIN=com.myco.myapp

Al ejecutar el script, cualquier ruta relativa será relativa a la ubicación del script de shell. (Sin embargo, cuando el Wrapper se inicia, éste establecerá su directorio de trabajo en el mismo que el binario del Wrapper.)

El Wrapper, al lanzarse, creará un archivo PID llamado "$PIDDIR/$APP_NAME.pid" (en este caso, myapp.pid). Este archivo se usará más tarde por el sccript de shell para informar si el proceso del Wrapper aún está en ejecución o no. Por defecto, $PIDDIR está en el mismo directorio del scrcip de shell.

Dependiendo de como esté configurado el script de shell, el Wrapper puede también usar uno o más de los archivos siguientes, usando el mismo patrón de nombres:

  • "$PIDDIR/$APP_NAME.anchor",
  • "$PIDDIR/$APP_NAME.command",
  • "$PIDDIR/$APP_NAME.status",
  • "$PIDDIR/$APP_NAME.java.status",
  • "$PIDDIR/$APP_NAME.anchor"

Algunas plataformas UNIX también definen un directorio de bloqueo, "/var/lock/subsys". Cuando ese directorio existe y se puede escribir, el Wrapper también escribirá un archivo de bloqueo: "/var/lock/subsys/$APP_NAME". Dichas plataformas usan este archivo de bloqueo para indicar qué servicios se están ejecutando actualmente. Como regla general, es una buena idea asegurarse de no ejecutar más de una aplicación con el mismo nombre, aunque se encuentren en directorios diferentes. Si lo hace, la última a iniciarse sobrescribirá el archivo de bloqueo, y la primera en apagarse lo eliminará. Esto no afectará al shell script del Wrapper, pero puede causar problemas para otro software de gestión.

Si quiere ejecutar dos aplicaciones usando el mismo binario físico del Wrapper, ambas aplicaciones se ejecutarán en el mismo directorio de trabajo. Esto significa que necesitará asegurarse que las dos aplicaciones tengan sccripts de shell diferentes, con nombres de aplicación diferentes ($APP_NAME), y que también usen archivos wrapper.conf diferentes. También se debe verificar el contenido de los archivos de configuración para asegurarse de que las dos aplicaciones tengan sus propios archivos de registrom usando la propiedad wrapper.logfile.

También es posible usar la propiedad wrapper.working.dir en cada archivo de configuración para controlar en onde cada aplicación se ejecuta. Si toma esta ruta, por favor asegúrese de leer completamente la documentación de la propiedad para ahorrar algo de tiempo.