Índice

wrapper.java.additional.<n>

Compatibilidad :1.0.0
Ediciones :Edición ProfesionaEdición EstándarEdición de la Comunidad
Plataformas :WindowsMac OSXLinuxIBM AIXFreeBSDHP-UXSolarisIBM z/Linux

Parámetros adicionales de Java para pasar a Java cuando se inicia. Estos no son parámetros para su aplicación, sino parámetros para la JVM.

Si desea cambiar dinámicamente la lista de parámetros adicionales de Java, existen varias maneras de hacerlo. La primera es usar archivos de inclusión en cascada para añadir un archivo de configuración generado que incluya las propiedades wrapper.java.additional.<n> junto con las opciones de la JVM. Como alternativa, puede usar la propiedad XDF para referenciar un archivo de parámetros donde simplemente se enumerarán las opciones de la JVM sin propiedades. Finalmente, puede pasar wrapper.java.additional.<n> como propiedades de línea de comandos al iniciar el Wrapper.

NOTA

Para propiedades específicas de la aplicación, especialmente aquellas con valores que contienen datos confidenciales, considere usar las propiedades wrapper.app.properties.<n>.


Componente <n>:

Cada elemento tiene un nombre de propiedad que empieza con "wrapper.java.additional.", y el componente "<n>" del nombre de la propiedad es un número entero a partir de "1". Por defecto, la numeración debe estar en secuencia, sin espacios. La propiedad wrapper.ignore_sequence_gaps se puede configurar opcionalmente para permitir espacios en la secuencia.


Entrada de parámetros individuales:

Es importante que cada propiedad solamente defina un único parámetro.

Ejemplo:
wrapper.java.additional.1=-server
wrapper.java.additional.2=-Dprop=TRUE

Ejemplo (Incorrecto):
wrapper.java.additional.1=-server -Dprop=TRUE

NOTA

A partir de la versión 3.6.0, las siguientes opciones se pueden separar de sus argumentos por un espacio.

Ejemplo (Incorrecto):
wrapper.java.additional.1=--add-opens module/package=target-module


Comillas:

Versión 3.6.0 y superiores

A partir de la versión 3.6.0, el manejo de caracteres especiales ha cambiado para garantizar la coherencia en todas las plataformas. En la mayoría de los casos, puede escribir el valor de parámetro exactamente como desee que se reciba por la JVM.

Una excepción a esto son los espacios iniciales o finales, que normalmente se eliminan de los valores de las propiedades. Para conservar estos espacios, es necesario encapsular el valor entre comillas. Estas comillas se eliminarán si la propiedad "quotable" correspondiente se establece en TRUE. Para conservar las comillas en el valor, escápelas con el carácter '\'. Las barras invertidas también deben duplicarse ('\\'). No se permite escapar ningún otro carácter.

When stripping quotes, only the the following changes will apply:

  • '\\' se convertirá en '\',
  • '\"' se convertirá en '"'
  • '"' se convertirá en ''
Ejemplo:
wrapper.java.additional.1=-Dprop="my arg  "
wrapper.java.additional.1.quotable=TRUE

Versiones anteriores a 3.6.0

En versiones anteriores del Wrapper, la forma como se administran las comillas varia de acuerdo con la plataforma. En Windows, el proceso Java se crea mediante una línea de comandos donde los argumentos que contienen espacios deben ir entre comillas. Las comillas se eliminan automáticamente de la línea de comandos al iniciar el proceso. En Linux, sin embargo, se utiliza una matriz y los argumentos se pasan directamente.

Para simular el comportamiento de Windows y utilizar la misma configuración en todas las plataformas, es posible marcar ciertos parámetros con un indicador de eliminación de comillas (propiedad stripquotes = TRUE). Este indicador solo se utiliza en Unix, y especifica que las comillas de deben eliminar antes de pasar el (los) parámetro(s) a la JVM.

Al eliminar las comillas, todos los demás caracteres, excepto los siguientes, permanecerán sin cambios.

  • '\\' se convertirá en '\',
  • '\"' se convertirá en '"'
  • '"' se convertirá en ''

wrapper.java.additional.<n>.quotable

Compatibilidad :3.6.0
Ediciones :Edición ProfesionaEdición EstándarEdición de la Comunidad
Plataformas :WindowsMac OSXLinuxIBM AIXFreeBSDHP-UXSolarisIBM z/Linux

Si un valor de un argumento de JVM necesita incluir espacios iniciales o finales, puede conservarlos encapsulando el valor entre comillas. Estas comillas se eliminarán si establece la propiedad wrapper.java.additional.<n>.quotable correspondiente en TRUE.

El valor predeterminado de esta propiedad es "FALSE".

Cuando una propiedad "quotable" se establece en TRUE, las comillas reales que se conservarán en el valor correspondiente deben entonces escaparse con un carácter '\', y las barras invertidas deben duplicarse ('\\'). No se permite escapar ningún otro carácter.

Los siguientes reemplazos se realizarán al eliminar las comillas.

  • '\\' se convertirá en '\',
  • '\"' se convertirá en '"'
  • '"' se convertirá en ''
Ejemplo:
wrapper.java.additional.1=-Dprop1="value with trailing spaces   "
wrapper.java.additional.1.quotable=TRUE

wrapper.java.additional.<n>.stripquotes

Compatibilidad :(No longer used as of 3.6.0)
Ediciones :Edición ProfesionaEdición EstándarEdición de la Comunidad
Plataformas :Windows (No Compatible)Mac OSXLinuxIBM AIXFreeBSDHP-UXSolarisIBM z/Linux

ADVERTENCIA

A partir de la versión 3.6.0, esta propiedad ya no es necesaria y, por lo tanto, deja de ser válida. Cualquier valor marcado con "stripquotes" debe revisarse para no escapar más las barras invertidas ('\') y las comillas ('"').

Si un valor de wrapper.java.additional.<n> contiene comillas, el contenido de las comillas se pasará a la JVM como un único argumento en Windows. Sin embargo, en UNIX, las comillas también se incluirán como parte del valor del argumento. En la mayoría de los casos, este no es el comportamiento correcto en UNIX, pero es así para mantener la compatibilidad con versiones anteriores.

La propiedad wrapper.java.additional.<n>.stripquotes permite indicarle al Wrapper que elimine automáticamente estas comillas adicionales en UNIX. La propiedad se ignora en Windows.

El valor predeterminado es el valor de la propiedad wrapper.java.additional.default.stripquotes, que a su vez tiene como valor predeterminado "FALSE".

Componente <n>:

Cada elemento tiene un nombre de propiedad que comienza con "wrapper.java.additional.", y el componente "<n>" del nombre de la propiedad es un número entero a partir de "1". Por defecto, la numeración debe estar en secuencia sin espacios. La propiedad wrapper.ignore_sequence_gaps se puede configurar opcionalmente para permitir espacios en la secuencia.

Ejemplo:
wrapper.java.additional.1.stripquotes=FALSE

Al eliminar las comillas, se realizarán los siguientes reemplazos. Todos los demás caracteres permanecerán inalterados.

  • '\\' se convertirá en '\',
  • '\"' se convertirá en '"'
  • '"' se convertirá en ''
Ejemplo:
wrapper.java.additional.1=-server
wrapper.java.additional.2=-Dprop=TRUE
wrapper.java.additional.3=-Dmyapp.data="../MyApp Home"
wrapper.java.additional.3.stripquotes=TRUE

wrapper.java.additional.default.stripquotes

Compatibilidad :3.5.17 (No longer used as of 3.6.0)
Ediciones :Edición ProfesionaEdición EstándarEdición de la Comunidad
Plataformas :Windows (No Compatible)Mac OSXLinuxIBM AIXFreeBSDHP-UXSolarisIBM z/Linux

ADVERTENCIA

A partir de la versión 3.6.0, esta propiedad ya no es necesaria y, por lo tanto, deja de ser válida. Cualquier valor marcado con "stripquotes" debe revisarse para no escapar más las barras invertidas ('\') y las comillas ('"').

Permite cambiar el comportamiento predeterminado de las comillas en UNIX cuando desee tener el mismo comportamiento para los valores de todas las propiedades wrapper.java.additional.<n>. El valor predeterminado es "FALSE". Esta propiedad se ignora en Windows.

Ejemplo:
wrapper.java.additional.default.stripquotes=FALSE

wrapper.java.additional.<n>.java_version.min

Compatibilidad :3.5.36
Ediciones :Edición ProfesionaEdición EstándarEdición de la Comunidad (No Compatible)
Plataformas :WindowsMac OSXLinuxIBM AIXFreeBSDHP-UXSolarisIBM z/Linux

Esta propiedad se puede utilizar para agregar la opción con el índice 'n' solo si la versión de Java es mayor o igual al valor especificado.

El valor predeterminado es '1.4', que es el la versión más antigua compatible con el Wrapper. Cualquier valor inferior no es válido y hará que el Wrapper se detenga.

El valor puede ser en los formatos '1.major[.minor[_revision]]' o 'major[.minor[.revision]]', independientemente de la versión de Java. Esto se hace para admitir ambos esquemas de numeración devueltos por 'java -version': antes de Java 9 se utilizaba el primer formato, mientras que Java 9 y versiones posteriores utilizan el segundo formato.

Los corchetes indican que los componentes de versión menor y de revisión son opcionales. Si se deja uno o ambos sin especificar, significa que estos marcadores de posición aceptarán cualquier número.

La opción con índice 'n' se ignora para cualquier versión de Java inferior a 1.7:
wrapper.java.additional.<n>.java_version.min=1.7
La opción con índice 'n' se ignora para cualquier versión de Java inferior a 8.0.40:
wrapper.java.additional.<n>.java_version.min=8.0.40

ADVERTENCIA

wrapper.java.additional.<n>.java_version.max

Compatibilidad :3.5.36
Ediciones :Edición ProfesionaEdición EstándarEdición de la Comunidad (No Compatible)
Plataformas :WindowsMac OSXLinuxIBM AIXFreeBSDHP-UXSolarisIBM z/Linux

Esta propiedad se utiliza para agregar la opción con el índice 'n' solo si la versión de Java es menor o igual al valor especificado.

El valor predeterminado es 'UNLIMITED'.

El valor puede ser en los formatos '1.major[.minor[_revision]]' o 'major[.minor[.revision]]', independientemente de la versión de Java. Esto se hace para admitir ambos esquemas de numeración devueltos por 'java -version': antes de Java 9 se utilizaba el primer formato, mientras que Java 9 y versiones posteriores utilizan el segundo formato.

Los corchetes indican que los componentes de versión menor y de revisión son opcionales. Si se deja uno o ambos sin especificar, significa que estos marcadores de posición aceptarán cualquier número.

La opción con índice 'n' se ignora para cualquier versión de Java mayor a 9.0.1:
wrapper.java.additional.<n>.java_version.max=9.0.1
La opción con índice 'n' se ignora para cualquier versión de Java mayor a 9:
wrapper.java.additional.<n>.java_version.max=9

ADVERTENCIA

wrapper.java.additional.<n>.app_only

Compatibilidad :3.5.57, Requires Java 9+ (Deprecated as of 3.5.60)
Ediciones :Edición ProfesionaEdición EstándarEdición de la Comunidad
Plataformas :WindowsMac OSXLinuxIBM AIXFreeBSDHP-UXSolarisIBM z/Linux

ADVERTENCIA

El uso de esta propiedad ha quedado obsoleto a partir de la versión 3.5.60 del Wrapper en favor de la propiedad wrapper.java.additional.<n>.scope.

Antes de iniciar una JVM para ejecutar la aplicación Java, el Wrapper ejecutará la línea de comando Java con una opción --dry-run para verificar que la línea de comando sea válida.

La propiedad wrapper.java.additional.<n>.app_only se puede establecer en TRUE para omitir una opción para la línea de comando "--dry-run".

Esta propiedad no tiene efecto cuando se utilizan versiones de Java que no admiten la opción --dry-run (anteriores a Java 9).

El valor predeterminado es FALSE", lo que significa que la opción especificada estará presente tanto en la línea de comandos de Java real como en la línea de comandos "--dry-run". En la gran mayoría de los casos, se prefiere FALSE para que se verifiquen todas las opciones de JVM.

NOTA

Si se establece esta propiedad a TRUE, se omitirá la comprobación de validez de la opción especificada.

Sin embargo, hay algunos casos en los que establecer wrapper.java.additional.<n>.app_only como TRUE puede resultar útil. Por ejemplo, usar la opción -XX:NativeMemoryTracking=[off|summary|detail] para rastrear la memoria nativa en las JVMs provocará una advertencia cuando se use en la línea de comandos --dry-run:

OpenJDK Servidor 64-Bit - Advertencia de la máquina virtual: El seguimiento de memoria nativa no se configuró correctamente. ¿Se está utilizando un iniciador incorrecto?

La mayoría de las veces, esta advertencia no será visible porque la salida se registrará en el nivel especificado con la propiedad wrapper.java.query.loglevel, que es DEBUG de forma predeterminada. Sin embargo, no es posible rastrear el uso de la memoria nativa de una JVM "--dry-run" porque no ejecutará el código nativo del usuario. Por lo tanto, es mejor no incluir esta opción en la línea de comandos "--dry-run".

Ejemplo (habilitar -XX:NativeMemoryTracking solo cuando se está ejecutando la aplicación):
wrapper.java.additional.4=-XX:NativeMemoryTracking=summary
wrapper.java.additional.4.app_only=TRUE

wrapper.java.additional.<n>.scope

Compatibilidad :3.5.60
Ediciones :Edición ProfesionaEdición EstándarEdición de la Comunidad
Plataformas :WindowsMac OSXLinuxIBM AIXFreeBSDHP-UXSolarisIBM z/Linux

ADVERTENCIA

NO modifique ninguno de estos parámetros a menos que haya leído la descripción de esta propiedad. Una configuración incorrecta puede hacer que el Wrapper no funcione como esperado.

Antes de iniciar la aplicación Java, el Wrapper ejecutará el comando java varias veces para determinar las características de la instalación actual de Java y las configuraciones adecuadas para la aplicación. En la mayoría de los casos, las líneas de comandos para estas invocaciones de Java son construidas por el Wrapper sin que el usuario tenga que preocuparse por ello. Sin embargo, en algunos casos excepcionales, puede ser necesario agregar o quitar ciertas opciones a estas líneas de comandos. Primero, elaboremos la lista de estas invocaciones de Java y sus funciones:

  • java --version: Esta invocación obtiene información sobre la instalación actual de Java (versión, proveedor, etc.). Solo utiliza el parámetro --version; no se necesitan opciones adicionales.

  • Llamada a la clase WrapperBootstrap: Esta invocación recupera información sobre la aplicación Java (módulo principal, clase principal, paquete, etc.). El Wrapper creará la línea de comandos con sus propias opciones y parámetros. En particular, la ruta de clase, la ruta del módulo y la lista de módulos deben coincidir exactamente con las del comando utilizado al iniciar la aplicación. En algunos casos excepcionales, el usuario puede agregar algunos argumentos adicionales para cargar la clase principal.

  • Llamada con la opción --dry-run: La opción --dry-run se introdujo en Java 9, por lo tanto, esta invocación no se realiza en versiones anteriores de Java. Esta llamada se utiliza para validar la línea de comandos Java justo antes de ejecutar la aplicación. La línea de comandos es esencialmente la que se utiliza al lanzar la aplicación con la opción --dry-run que especifica que el método principal no debe ejecutarse.

    En algunos casos excepcionales, es posible que se desee eliminar ciertas opciones que no son relevantes en el contexto del simulacro (dry run). Por ejemplo, usar la opción -XX:NativeMemoryTracking=[off|summary|detail] para rastrear la memoria nativa en la JVM provocará una advertencia cuando se use en la línea de comando --dry-run:

    OpenJDK Servidor 64-Bit - Advertencia de la máquina virtual: El seguimiento de memoria nativa no se configuró correctamente. ¿Se está utilizando un iniciador incorrecto?
    

    La mayoría de las veces, esta advertencia no será visible porque la salida se registrará en el nivel especificado con la propiedad wrapper.java.query.loglevel, que es DEBUG de forma predeterminada. Sin embargo, no es posible rastrear el uso de la memoria nativa de una JVM "--dry-run" porque no ejecutará el código nativo del usuario. Por lo tanto, es mejor no incluir esta opción en la línea de comandos "--dry-run".

La propiedad wrapper.java.additional.<n>.scope controla en qué línea(s) de comando se debe referenciar el parámetro con índice 'n'.

Los valores posibles son:

  • DRYRUN_APP: para pasar el parámetro tanto a la instancia --dry-run como a la aplicación. Este valor es adecuado para la gran mayoría de los casos.

  • APP: para pasar únicamente el parámetro a la aplicación.

  • BOOTSTRAP_DRYRUN_APP: para pasar el parámetro a la instancia bootstrap, la instancia --dry-run y la aplicación.

El valor predeterminado es DRYRUN_APP.

Ejemplo:
# La siguiente opción se utiliza para las llamadas --dry-run y de aplicación:
wrapper.java.additional.1=-Xmx1g
wrapper.java.additional.1.scope=DRYRUN_APP

# La siguiente opción se utiliza para las llamadas de arranque, --dry-run y de aplicación:
wrapper.java.additional.2=-agentlib:mylib
wrapper.java.additional.2.scope=BOOTSTRAP_DRYRUN_APP

# La siguiente opción es solo para la aplicación:
wrapper.java.additional.3=-XX:NativeMemoryTracking=summary
wrapper.java.additional.3.scope=APP

wrapper.java.additional_file

Compatibilidad :3.5.16
Ediciones :Edición ProfesionaEdición EstándarEdición de la Comunidad
Plataformas :WindowsMac OSXLinuxIBM AIXFreeBSDHP-UXSolarisIBM z/Linux

Esta propiedad proporciona una forma de especificar un archivo que puede contener uno o más parámetros que se pasarán tal cual a la JVM cuando se inicie. Esto puede ser muy útil cuando la lista de parámetros necesita generarse dinámicamente o mediante un instalador.

Cualquier parámetro definido en este archivo aparecerá después de aquellos definidos mediante las propiedades wrapper.java.additional.<n> estándar.

A partir de la versión 3.5.23 del Wrapper, se ampliarán todas las referencias a variables de entorno en el archivo.

NOTA

Puede utilizar diferentes versiones de Java incluyendo la variable de entorno WRAPPER_JAVA_VERSION en el nombre del archivo.


Formato del Archivo de Parámetros:

El formato del archivo es simple.

  • Debe comenzar con una línea de directiva de codificación, al igual que el archivo de configuración del Wrapper. Esto es necesario para indicarle al Wrapper qué codificación usar al leer el archivo. Si falta esta línea, el Wrapper intentará continuar después de registrar una advertencia. La codificación utilizada en el archivo puede ser diferente de la codificación utilizada en otros archivos de configuración.
  • El carácter '#' se interpreta como un carácter de comentario. Para incluir un carácter '#' en un valor de propiedad, el valor debe estar entre comillas ("#") o escapado por un segundo carácter '#'.
  • De forma predeterminada, cualquier línea que no esté vacía y que no sea un comentario se interpretará como un argumento cuyo valor abarca toda la línea. Este comportamiento se puede cambiar estableciendo la propiedad wrapper.java.additional_file.quotable en TRUE. En este modo, los argumentos se delimitan con espacios sin comillas. Esto permite incluir varios parámetros en la misma línea. Los valores que contienen espacios deben estar entre comillas; estas comillas se eliminarán durante el análisis del archivo

Ejemplo de Archivo Adicional Java UTF-8 (con .quotable=FALSE):
@encoding=UTF-8
# Argumentos de ejemplo: Un argumento por línea
-DTEST1=Value1
-DTEST2=Value2 con espacio
-DTEST3=Value3 con espacio
-DTEST4=Value4

Ejemplo de Archivo Adicional Java (con .quotable=TRUE):
@encoding=UTF-8
# Argumentos de ejemplo: Múltiples argumentos en una línea
-DTEST1=Value1 -DTEST2="Value2 con espacio" "-DTEST3=Value3 con espacio"

# Más argumentos
-DTEST4=Value4

NOTA

Las versiones anteriores a 3.6.0 no tienen el modo "quotable" (encomillable), y siempre se permiten múltiples parámetros por línea.

Si uno de los valores necesita incluir un espacio, es necesario agregar comillas siguiendo las reglas que se describen a continuación para asegurarse de que el archivo funcione de manera consistente entre todas las plataformas.

wrapper.java.additional_file.required

Compatibilidad :3.5.36
Ediciones :Edición ProfesionaEdición EstándarEdición de la Comunidad
Plataformas :WindowsMac OSXLinuxIBM AIXFreeBSDHP-UXSolarisIBM z/Linux

Especifica si el archivo adicional Java es obligatorio o no. Si es obligatorio y no se encuentra, el Wrapper se detendrá sin iniciar la máquina JVM. Si no es obligatorio, el archivo se ignorará cuando no se encuentre.

El valor predeterminado es TRUE.

Ejemplo:
wrapper.java.additional_file.required=FALSE

wrapper.java.additional_file.quotable

Compatibilidad :3.6.0
Ediciones :Edición ProfesionaEdición EstándarEdición de la Comunidad
Plataformas :WindowsMac OSXLinuxIBM AIXFreeBSDHP-UXSolarisIBM z/Linux

Cuando se configura en TRUE, se eliminarán las comillas del "archivo de adicional". Esto permite usar comillas como delimitadores de valores y, por lo tanto, enumerar varios argumentos en una sola línea.

Además, las comillas se pueden utilizar como delimitadores para conservar espacios iniciales o finales en los argumentos.

El valor predeterminado de esta propiedad es "FALSE"

ADVERTENCIA

Las versiones anteriores a 3.6.0 no tienen el modo "quotable" (encomillable), y siempre se permiten múltiples parámetros por línea.

Si uno de los valores necesita incluir un espacio, es necesario agregar comillas siguiendo las reglas que se describen a continuación para asegurarse de que el archivo funcione de manera consistente entre todas las plataformas.

En el ejemplo a seguir, la línea interpretada como tres parámetros distintos antes de la versión 3.6.0. A partir de la versión 3.6.0, se interpretan como un único parámetro que contiene comillas, a menos que la propiedad wrapper.java.additional_file.quotable se establezca en TRUE.

"-Dprop1=val 1" -Dprop1="val 2" -Dprop1=val3

Cuando una propiedad "quotable" se establece en TRUE, las comillas reales que se conservarán en el valor correspondiente deben entonces escaparse con un carácter '\', y las barras invertidas deben duplicarse ('\\'). No se permite escapar ningún otro carácter.

Los siguientes reemplazos se realizarán al eliminar las comillas.

  • '\\' se convertirá en '\',
  • '\"' se convertirá en '"'
  • '"' se convertirá en ''
Ejemplo:
wrapper.java.additional_file.quotable=TRUE
Ejemplo de Archivo de Parámetros UTF-8:
@encoding=UTF-8
-DTEST1=Value1 -DTEST2="Valor de Test conteniendo espacios."

wrapper.java.additional_file.stripquotes

Compatibilidad :3.5.16 (No longer used as of 3.6.0)
Ediciones :Edición ProfesionaEdición EstándarEdición de la Comunidad
Plataformas :Windows (No Compatible)Mac OSXLinuxIBM AIXFreeBSDHP-UXSolarisIBM z/Linux

ADVERTENCIA

A partir de la versión 3.6.0, esta propiedad ya no es necesaria y, por lo tanto, deja de ser válida. Cualquier valor marcado con "stripquotes" debe revisarse para no escapar más las barras invertidas ('\') y las comillas ('"').

Cada plataforma maneja los parámetros con espacios de forma distinta. Para que una configuración funcione correctamente, siempre debe entrecomillar esos valores. En Windows, se usarán tal cual. Sin embargo, en plataformas UNIX, las comillas se eliminarán al dividir la línea de comandos en una lista de parámetros.

En casi todos los casos, deseará eliminar estas comillas. El valor predeterminado es "FALSE".

Ejemplo:
wrapper.java.additional_file.stripquotes=FALSE
Ejemplo de Archivo de Parámetros UTF-8:
@encoding=UTF-8
-DTEST1=Value1 -DTEST2="Test Value with spaces."

Ejemplos de Uso

Métodos de Integración

Las páginas a continuación describen 4 métodos diferentes de cómo integrar una aplicación Java con el Java Service Wrapper. Cada método se ilustra con un ejemplo que usa las propiedades wrapper.java.additional.<n> para configurar cosas como memoria, clase y rutas de biblioteca.

Control con JMX

Las propiedades wrapper.java.additional.<n> también se pueden utilizar para configurar herramientas de control como VisualVM o JConsole.

Control de Memoria Máxima en Java

El Wrapper proporciona varias propiedades para controlar la memoria que la JVM podrá utilizar. Estas propiedades tienen sus equivalentes en las propiedades wrapper.java.additional.<n>. Consulte las páginas siguientes para obtener más información.

Referencia: Parámetros