Esta sección describe los pasos para empezar a usar WildFly 40.0.1 de forma rápida. Otras versiones deberían funcionar de manera similar.
Esta configuración se basa en ejecutar WildFly como un servidor independiente (standalone).
Descargar WildFly
Descargue la distribución de WildFly como un archivo zip desde su Página de Descargas.
En este ejemplo trabajaremos con wildfly-40.0.1.Final.zip.
Extraiga el archivo para obtener un directorio wildfly-40.0.1.Final, y opcionalmente cámbiele el nombre a lo que prefiera para trabajar.
Descargar el Wrapper
Los siguientes pasos están diseñados para funcionar con la versión 3.7.0 del Java Service Wrapper.
Es posible utilizar versiones anteriores, pero probablemente requerirá algunos cambios.
Decida qué edición utilizar (Profesional, Estándar o Comunidad) y seleccione la plataforma, la cantidad de bits y la arquitectura de destino.
Luego descargue el instalador o archivo, y proceda a instalarlo o extraerlo.
En este ejemplo, asumiremos que está utilizando la Edición Profesional de 64 bits en Windows x86.
Integración con el Wrapper
Para facilitar la ubicación de los archivos requeridos del Wrapper, cree el siguiente script de PowerShell en su directorio extraído wildfly-40.0.1.Final como updateWrapper.ps1.
Actualice la ubicación donde instaló o extrajo el Wrapper mencionado anteriormente.
Intentamos seguir la estructura de directorios existente de WildFly, por lo que todos los archivos del Wrapper se encuentran en el directorio bin/wrapper.
Los archivos de registro se ubicarán en standalone/log.
La variable JAVA_HOME debe estar configurada, pero utilizará por defecto el entorno del sistema si está definida allí.
La serie WildFly 40.0.x requiere que se especifique por lo mínimo Java 17.
Cree el archivo de configuración del Wrapper como bin/wrapper/wrapper.conf con el siguiente contenido:
@encoding=UTF-8
# The configuration file must begin with a line declaring its encoding.
# Default mode for file inclusions
@include.default_mode=required
# Include file problems can be debugged by removing '#' at the beginning
# of the following line:
#@include.debug
#********************************************************************
# Environment
#********************************************************************
set.default.JAVA_HOME=(SetMe)
set.JBOSS_HOME=%WRAPPER_BIN_DIR%/../..
#wrapper.working.dir=%WRAPPER_BIN_DIR%/../..
#********************************************************************
# Wrapper License Properties (Ignored by Community Edition)
#********************************************************************
# Professional and Standard Editions of the Wrapper require a valid
# License Key to start. Licenses can be purchased or a trial license
# requested on the following pages:
# https://wrapper.tanukisoftware.com/purchase
# https://wrapper.tanukisoftware.com/trial
# The Wrapper will look for either of the following optional files for a
# valid License Key. License Key properties can optionally be included
# directly in this configuration file.
@include.optional %WRAPPER_CONF_DIR%/wrapper-license.conf
@include.optional %WRAPPER_CONF_DIR%/wrapper-license-%WRAPPER_HOST_NAME%.conf
# The following property will output information about which License Key(s)
# are being found, and can aid in resolving any licensing problems.
#wrapper.license.debug=TRUE
#********************************************************************
# Wrapper Localization
#********************************************************************
# Specify the language and locale which the Wrapper should use.
#wrapper.lang=en_US # en_US or ja_JP
# Specify the location of the language resource files (*.mo).
wrapper.lang.folder=%WRAPPER_BIN_DIR%
#********************************************************************
# Wrapper Java Properties
#********************************************************************
# Java Application
wrapper.java.command=%JAVA_HOME%/bin/java
# Tell the Wrapper to log the full generated Java command line.
wrapper.java.command.loglevel=INFO
# Wrapper Jar file
wrapper.jarfile=%WRAPPER_BIN_DIR%/wrapper.jar
# Log level for notices about missing Java Classpath entries.
wrapper.java.classpath.missing.loglevel=WARN
# Java Version control
wrapper.java.version.output=true
wrapper.java.version.min=17
#wrapper.java.version.max=
# Java Classpath. Add class path elements as needed starting from 1
#(no classpath)
wrapper.java.classpath.1=%JBOSS_HOME%/jboss-modules.jar
# Java Modulepath. (Requires Java 9 or above)
# Add module path elements as needed starting from 1
#wrapper.java.module_path.1=
# Java Module list. (Requires Java 9 or above)
# Add module names as needed starting from 1
#wrapper.java.module.1=
# Java Library Path (location of wrapper.dll or libwrapper.so)
wrapper.java.library.path.1=%WRAPPER_BIN_DIR%
# Java Bits. On applicable platforms, tells the JVM to run in 32 or 64-bit mode.
wrapper.java.additional.auto_bits=TRUE
# Java Additional Parameters
wrapper.java.additional.1=-Djdk.serialFilter=maxbytes=10485760;maxdepth=128;maxarray=100000;maxrefs=300000
wrapper.java.additional.2=-Djava.net.preferIPv4Stack=true
wrapper.java.additional.3=-Djava.awt.headless=true
wrapper.java.additional.4=--add-exports=java.desktop/sun.awt=ALL-UNNAMED
wrapper.java.additional.5=--add-exports=java.naming/com.sun.jndi.ldap=ALL-UNNAMED
wrapper.java.additional.6=--add-exports=java.naming/com.sun.jndi.url.ldap=ALL-UNNAMED
wrapper.java.additional.7=--add-exports=java.naming/com.sun.jndi.url.ldaps=ALL-UNNAMED
wrapper.java.additional.8=--add-exports=jdk.naming.dns/com.sun.jndi.dns=ALL-UNNAMED
wrapper.java.additional.9=--add-opens=java.base/java.lang=ALL-UNNAMED
wrapper.java.additional.10=--add-opens=java.base/java.lang.invoke=ALL-UNNAMED
wrapper.java.additional.11=--add-opens=java.base/java.lang.reflect=ALL-UNNAMED
wrapper.java.additional.12=--add-opens=java.base/java.io=ALL-UNNAMED
wrapper.java.additional.13=--add-opens=java.base/java.net=ALL-UNNAMED
wrapper.java.additional.14=--add-opens=java.base/java.security=ALL-UNNAMED
wrapper.java.additional.15=--add-opens=java.base/java.util=ALL-UNNAMED
wrapper.java.additional.16=--add-opens=java.base/java.util.concurrent=ALL-UNNAMED
wrapper.java.additional.17=--add-opens=java.management/javax.management=ALL-UNNAMED
wrapper.java.additional.18=--add-opens=java.naming/javax.naming=ALL-UNNAMED
# Initial Java Heap Size (in MB)
wrapper.java.initmemory=64
# Maximum Java Heap Size (in MB)
wrapper.java.maxmemory=512
# Application System Properties passed via the backend.
# Core Java System Properties must be passed using wrapper.java.additional.<n>.
wrapper.app.property.1=[Standalone]=
wrapper.app.property.2=jboss.modules.system.pkgs=org.jboss.byteman
wrapper.app.property.3=org.jboss.boot.log.file=%JBOSS_HOME%/standalone/log/server.log
wrapper.app.property.4=logging.configuration=file:%JBOSS_HOME%/standalone/configuration/logging.properties
# Note: The following system property is important to allow the application to
# initialize the Java LogManager without interference from the Wrapper.
wrapper.app.property.100=org.tanukisoftware.wrapper.WrapperManager.waitLogManagerInitialized=true
# Java Main class. This class must implement the WrapperListener interface
# or guarantee that the WrapperManager class is initialized.
# Helper classes are provided to do this for you.
# See the following page for details:
# https://wrapper.tanukisoftware.com/doc/english/integrate.html
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperJarApp
# Application parameters.
# Pass parameters via the backend instead of the command line.
#wrapper.app.parameter.backend=TRUE
# Add parameters as needed starting from 1
wrapper.app.parameter.1=%JBOSS_HOME%/jboss-modules.jar
wrapper.app.parameter.2=-mp
wrapper.app.parameter.3=%JBOSS_HOME%/modules
wrapper.app.parameter.4=org.jboss.as.standalone
wrapper.app.parameter.5=-Djboss.home.dir=%JBOSS_HOME%
wrapper.app.parameter.6=-Djboss.server.base.dir=%JBOSS_HOME%/standalone
#********************************************************************
# Wrapper Logging Properties
#********************************************************************
# Enables Debug output from the Wrapper.
# wrapper.debug=TRUE
# Format of output for the console. (See docs for formats)
wrapper.console.format=LPTM
# Log Level for console output. (See docs for log levels)
wrapper.console.loglevel=INFO
# Log file to use for Wrapper output logging.
wrapper.logfile=%JBOSS_HOME%/standalone/log/wrapper.log
# Format of output for the log file. (See docs for formats)
wrapper.logfile.format=LPTM
# Log Level for log file output. (See docs for log levels)
wrapper.logfile.loglevel=INFO
# Roll mode of the log file.
# SIZE_OR_WRAPPER causes the file to be rolled whenever its size exceeds the
# value defined by wrapper.logfile.maxsize, or whenever the Wrapper is
# launched.
wrapper.logfile.rollmode=SIZE_OR_WRAPPER
# Maximum size that the log file will be allowed to grow to before
# the log is rolled. Size is specified in bytes. The default value
# of 0 disables log rolling. May abbreviate with the 'k' (kb) or
# 'm' (mb) suffixes. For example: 10m = 10 megabytes.
wrapper.logfile.maxsize=10m
# Maximum number of rolled log files which will be allowed before old
# files are deleted. The default value of 0 implies no limit.
wrapper.logfile.maxfiles=9
# Log Level for sys/event log output. (See docs for log levels)
wrapper.syslog.loglevel=NONE
#********************************************************************
# Wrapper General Properties
#********************************************************************
# Allow for the use of non-contiguous numbered properties
wrapper.ignore_sequence_gaps=TRUE
# Do not start if the pid file already exists.
wrapper.pidfile.strict=TRUE
# Title to use when running as a console
wrapper.console.title=WildFly Server
#********************************************************************
# Wrapper JVM Checks
#********************************************************************
# Detect DeadLocked Threads in the JVM. (Requires Standard Edition)
wrapper.check.deadlock=TRUE
wrapper.check.deadlock.interval=60
wrapper.check.deadlock.action=RESTART
wrapper.check.deadlock.output=FULL
# Out Of Memory detection.
# Ignore -verbose:class output to avoid false positives.
wrapper.filter.trigger.1000=[Loaded java.lang.OutOfMemoryError
wrapper.filter.action.1000=NONE
# Ignore -Xlog:class+load=level output to avoid false positives.
wrapper.filter.trigger.1001=[class,load] java.lang.OutOfMemoryError
wrapper.filter.action.1001=NONE
# (Simple match)
wrapper.filter.trigger.1002=java.lang.OutOfMemoryError
# (Only match text in stack traces if -XX:+PrintClassHistogram is being used.)
#wrapper.filter.trigger.1002=Exception in thread "*" java.lang.OutOfMemoryError
#wrapper.filter.allow_wildcards.1002=TRUE
wrapper.filter.action.1002=RESTART
wrapper.filter.message.1002=The JVM has run out of memory.
#********************************************************************
# Wrapper Email Notifications. (Requires Professional Edition)
#********************************************************************
# Common Event Email settings.
#wrapper.event.default.email.debug=TRUE
#wrapper.event.default.email.smtp.host=<SMTP_Host>
#wrapper.event.default.email.smtp.port=25
#wrapper.event.default.email.subject=[%WRAPPER_HOSTNAME%:%WRAPPER_NAME%:%WRAPPER_EVENT_NAME%] Event Notification
#wrapper.event.default.email.sender=<Sender email>
#wrapper.event.default.email.recipient=<Recipient email>
# Configure the log attached to event emails.
#wrapper.event.default.email.maillog=ATTACHMENT
#wrapper.event.default.email.maillog.lines=50
#wrapper.event.default.email.maillog.format=LPTM
#wrapper.event.default.email.maillog.loglevel=INFO
# Enable specific event emails.
#wrapper.event.wrapper_start.email=TRUE
#wrapper.event.jvm_prelaunch.email=TRUE
#wrapper.event.jvm_start.email=TRUE
#wrapper.event.jvm_started.email=TRUE
#wrapper.event.jvm_deadlock.email=TRUE
#wrapper.event.jvm_stop.email=TRUE
#wrapper.event.jvm_stopped.email=TRUE
#wrapper.event.jvm_restart.email=TRUE
#wrapper.event.jvm_failed_invocation.email=TRUE
#wrapper.event.jvm_max_failed_invocations.email=TRUE
#wrapper.event.jvm_kill.email=TRUE
#wrapper.event.jvm_killed.email=TRUE
#wrapper.event.jvm_unexpected_exit.email=TRUE
#wrapper.event.wrapper_stop.email=TRUE
# Specify custom mail content
wrapper.event.jvm_restart.email.body=The JVM was restarted.\n\nPlease check on its status.\n
#********************************************************************
# Wrapper Secure File Properties
#********************************************************************
# To enforce the principle of least privilege for files containing
# sensitive data, the Wrapper requires that all permissions granted
# to these files be explicitly allowed in the configuration.
# Please read the documentation for the full list of properties.
# Allow specific accounts or groups on Windows.
#wrapper.secure_file.check.windows.allowed_account.1=NT AUTHORITY\SYSTEM
#wrapper.secure_file.check.windows.allowed_account.2=BUILTIN\Administrators
# Allow specific groups on Unix systems.
#wrapper.secure_file.check.unix.allowed_group.1=<Group_Of_Users>
# Additional files to check for permissions (Requires Standard Edition)
#wrapper.secure_file.additional.1=<Secured_File>
#********************************************************************
# Wrapper Windows Service Properties
#********************************************************************
# WARNING - Do not modify any of these properties when an application
# using this configuration file has been installed as a service.
# Please uninstall the service before modifying this section.
# The service can then be reinstalled.
# Name of the service
wrapper.name=wildfly
# Display name of the service
wrapper.displayname=WildFly
# Description of the service
wrapper.description=WildFly Standalone
# Service dependencies. Add dependencies as needed starting from 1
wrapper.ntservice.dependency.1=
# Mode in which the service is installed.
# AUTO_START, DELAY_START (Requires Standard Edition) or DEMAND_START
wrapper.ntservice.starttype=AUTO_START
# Account to use when running the service.
# The default blank value will use LocalSystem, which is highly privileged
# account on Windows. Please read the documentation page for this property to
# learn about other account types that can be used.
wrapper.ntservice.account=
# Allow the current user to perform certain actions without being prompted for
# administrator credentials. (Requires Professional Edition)
#wrapper.ntservice.permissions.1.account=CURRENT_USER
#wrapper.ntservice.permissions.1.allow=START, STOP, PAUSE_RESUME
WildFly espera ser lo primero en ejecutarse cuando se inicia Java.
El MBean del Wrapper y la detección de interbloqueos (Deadlock) interactúan internamente con el código de registro (logging) de Java, lo que causa que el registro se inicialice antes de que WildFly tenga la oportunidad de hacerlo.
La propiedad org.tanukisoftware.wrapper.WrapperManager.waitLogManagerInitialized=true (introducida en la versión 3.7.0 del Wrapper) le indica al Wrapper que aplace las referencias al LogManager de Java hasta que WildFly lo haya inicializado.
WildFly realiza esta inicialización en un hilo en segundo plano durante el inicio.
El Wrapper espera primero a que se configure la propiedad del sistema java.util.logging.manager, por un máximo de tiempo definido por org.tanukisoftware.wrapper.WrapperManager.waitLogManagerInitialized.timeout (30 segundos por defecto).
Una vez detectada la propiedad, la clase LogManager debería inicializarse poco después, por lo que el Wrapper espera un tiempo adicional definido por org.tanukisoftware.wrapper.WrapperManager.waitLogManagerInitialized.delay (un segundo por defecto) antes de acceder a ella.
Los valores predeterminados son adecuados para la mayoría de los entornos, pero ambas propiedades se pueden ajustar si es necesario.
Para versiones del Wrapper anteriores a la versión 3.7.0, deberá deshabilitar tanto los MBeans del Wrapper como la detección de interbloqueos.
El registro del MBean puede deshabilitarse al esablecer la propiedad del sistema -Dorg.tanukisoftware.wrapper.WrapperManager.mbean=false utilizando wrapper.java.additional.<n>. El uso de wrapper.app.property.<n> no funcionará.
La detección de interbloqueos se puede deshabilitar configurando la propiedad de configuración wrapper.check.deadlock en FALSE.
NOTA
Si utiliza las ediciones Estándar o Profesional, se habrá copiado una licencia predeterminada de 15 minutos como etc/wrapper-license.conf.
Deberá actualizar a una Licencia de Prueba, para Servidor o de Desarrollo para ejecutarlo durante más tiempo.
Ejecución
Para ejecutar en una consola:
Ejecute: bin/service.bat console
Para ejecutar como un Windows Service:
Instale el servicio con: bin/service.bat install
A continuación, inicie el servicio con: bin/service.bat start
Detenga el servicio con: bin/service.bat stop
Desinstale el servicio con: bin/service.bat remove
Para obtener una lista de los comandos disponibles:
Ejecute: bin/service.bat
Integración con WildFly 26.1.x
Esta sección describe los pasos para empezar a usar WildFly 26.1.3 de forma rápida. Otras versiones deberían funcionar de manera similar.
Esta configuración se basa en el lanzamiento de WildFly como un servidor independiente (standalone).
Descargar WildFly
Descargue la distribución completa y web de WildFly EE 8 como un archivo zip desde su Página de Descargas.
En este ejemplo trabajaremos con wildfly-26.1.3.Final.zip.
Extraiga el archivo para obtener un directorio wildfly-26.1.3.Final, y opcionalmente cámbiele el nombre a lo que prefiera para trabajar.
Descargar el Wrapper
Los siguientes pasos están diseñados para funcionar con la versión 3.7.0 del Java Service Wrapper.
Es posible utilizar versiones anteriores, pero probablemente requerirá algunos cambios.
Decida qué edición utilizar (Profesional, Estándar o Comunidad) y seleccione la plataforma, la cantidad de bits y la arquitectura de destino.
Luego descargue el instalador o archivo, y proceda a instalarlo o extraerlo.
Asumiremos que está utilizando la Edición Profesional de 64 bits en Windows x86.
Integración con el Wrapper
Para facilitar la ubicación de los archivos requeridos del Wrapper, cree el siguiente script de PowerShell en su directorio extraído wildfly-26.1.3.Final como updateWrapper.ps1.
Actualice la ubicación donde instaló o extrajo el Wrapper mencionado anteriormente.
Intentamos seguir la estructura de directorios existente de WildFly, por lo que todos los archivos del Wrapper se encuentran en el directorio bin/wrapper.
Los archivos de registro se ubicarán en standalone/log.
La variable JAVA_HOME debe estar configurada, pero utilizará por defecto el entorno del sistema si está definida allí.
La serie WildFly 26.1.x requiere que se especifique por lo mínimo Java 8.
Cree el archivo de configuración del Wrapper como bin/wrapper/wrapper.conf con el siguiente contenido:
@encoding=UTF-8
# The configuration file must begin with a line declaring its encoding.
# Default mode for file inclusions
@include.default_mode=required
# Include file problems can be debugged by removing '#' at the beginning
# of the following line:
#@include.debug
#********************************************************************
# Environment
#********************************************************************
set.default.JAVA_HOME=(SetMe)
set.JBOSS_HOME=%WRAPPER_BIN_DIR%/../..
#wrapper.working.dir=%WRAPPER_BIN_DIR%/../..
#********************************************************************
# Wrapper License Properties (Ignored by Community Edition)
#********************************************************************
# Professional and Standard Editions of the Wrapper require a valid
# License Key to start. Licenses can be purchased or a trial license
# requested on the following pages:
# https://wrapper.tanukisoftware.com/purchase
# https://wrapper.tanukisoftware.com/trial
# The Wrapper will look for either of the following optional files for a
# valid License Key. License Key properties can optionally be included
# directly in this configuration file.
@include.optional %WRAPPER_CONF_DIR%/wrapper-license.conf
@include.optional %WRAPPER_CONF_DIR%/wrapper-license-%WRAPPER_HOST_NAME%.conf
# The following property will output information about which License Key(s)
# are being found, and can aid in resolving any licensing problems.
#wrapper.license.debug=TRUE
#********************************************************************
# Wrapper Localization
#********************************************************************
# Specify the language and locale which the Wrapper should use.
#wrapper.lang=en_US # en_US or ja_JP
# Specify the location of the language resource files (*.mo).
wrapper.lang.folder=%WRAPPER_BIN_DIR%
#********************************************************************
# Wrapper Java Properties
#********************************************************************
# Java Application
wrapper.java.command=%JAVA_HOME%/bin/java
# Tell the Wrapper to log the full generated Java command line.
wrapper.java.command.loglevel=INFO
# Wrapper Jar file
wrapper.jarfile=%WRAPPER_BIN_DIR%/wrapper.jar
# Log level for notices about missing Java Classpath entries.
wrapper.java.classpath.missing.loglevel=WARN
# Java Version control
wrapper.java.version.output=true
wrapper.java.version.min=8
#wrapper.java.version.max=
# Java Classpath. Add class path elements as needed starting from 1
#(no classpath)
#wrapper.java.classpath.1=%JBOSS_HOME%/jboss-modules.jar
# Java Modulepath. (Requires Java 9 or above)
# Add module path elements as needed starting from 1
#wrapper.java.module_path.1=
# Java Module list. (Requires Java 9 or above)
# Add module names as needed starting from 1
#wrapper.java.module.1=
# Java Library Path (location of wrapper.dll or libwrapper.so)
wrapper.java.library.path.1=%WRAPPER_BIN_DIR%
# Java Bits. On applicable platforms, tells the JVM to run in 32 or 64-bit mode.
wrapper.java.additional.auto_bits=TRUE
# Java Additional Parameters
wrapper.java.additional.1=-XX:MetaspaceSize=96M
wrapper.java.additional.2=-XX:MaxMetaspaceSize=256m
wrapper.java.additional.3=-Djava.net.preferIPv4Stack=true
wrapper.java.additional.4=-Djava.awt.headless=true
# Initial Java Heap Size (in MB)
wrapper.java.initmemory=64
# Maximum Java Heap Size (in MB)
wrapper.java.maxmemory=512
# Application System Properties passed via the backend.
# Core Java System Properties must be passed using wrapper.java.additional.<n>.
wrapper.app.property.1=[Standalone]=
wrapper.app.property.2=jboss.modules.system.pkgs=org.jboss.byteman
wrapper.app.property.3=org.jboss.boot.log.file=%JBOSS_HOME%/standalone/log/server.log
wrapper.app.property.4=logging.configuration=file:%JBOSS_HOME%/standalone/configuration/logging.properties
# Note: The following system property is important to allow the application to
# initialize the Java LogManager without interference from the Wrapper.
wrapper.app.property.100=org.tanukisoftware.wrapper.WrapperManager.waitLogManagerInitialized=true
# Java Main class. This class must implement the WrapperListener interface
# or guarantee that the WrapperManager class is initialized.
# Helper classes are provided to do this for you.
# See the following page for details:
# https://wrapper.tanukisoftware.com/doc/english/integrate.html
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperJarApp
# Application parameters.
# Pass parameters via the backend instead of the command line.
#wrapper.app.parameter.backend=TRUE
# Add parameters as needed starting from 1
wrapper.app.parameter.1=%JBOSS_HOME%/jboss-modules.jar
wrapper.app.parameter.2=-mp
wrapper.app.parameter.3=%JBOSS_HOME%/modules
wrapper.app.parameter.4=org.jboss.as.standalone
wrapper.app.parameter.5=-Djboss.home.dir=%JBOSS_HOME%
wrapper.app.parameter.6=-Djboss.server.base.dir=%JBOSS_HOME%/standalone
#********************************************************************
# Wrapper Logging Properties
#********************************************************************
# Enables Debug output from the Wrapper.
# wrapper.debug=TRUE
# Format of output for the console. (See docs for formats)
wrapper.console.format=LPTM
# Log Level for console output. (See docs for log levels)
wrapper.console.loglevel=INFO
# Log file to use for Wrapper output logging.
wrapper.logfile=%JBOSS_HOME%/standalone/log/wrapper.log
# Format of output for the log file. (See docs for formats)
wrapper.logfile.format=LPTM
# Log Level for log file output. (See docs for log levels)
wrapper.logfile.loglevel=INFO
# Roll mode of the log file.
# SIZE_OR_WRAPPER causes the file to be rolled whenever its size exceeds the
# value defined by wrapper.logfile.maxsize, or whenever the Wrapper is
# launched.
wrapper.logfile.rollmode=SIZE_OR_WRAPPER
# Maximum size that the log file will be allowed to grow to before
# the log is rolled. Size is specified in bytes. The default value
# of 0 disables log rolling. May abbreviate with the 'k' (kb) or
# 'm' (mb) suffixes. For example: 10m = 10 megabytes.
wrapper.logfile.maxsize=10m
# Maximum number of rolled log files which will be allowed before old
# files are deleted. The default value of 0 implies no limit.
wrapper.logfile.maxfiles=9
# Log Level for sys/event log output. (See docs for log levels)
wrapper.syslog.loglevel=NONE
#********************************************************************
# Wrapper General Properties
#********************************************************************
# Allow for the use of non-contiguous numbered properties
wrapper.ignore_sequence_gaps=TRUE
# Do not start if the pid file already exists.
wrapper.pidfile.strict=TRUE
# Title to use when running as a console
wrapper.console.title=WildFly Server
#********************************************************************
# Wrapper JVM Checks
#********************************************************************
# Detect DeadLocked Threads in the JVM. (Requires Standard Edition)
wrapper.check.deadlock=TRUE
wrapper.check.deadlock.interval=60
wrapper.check.deadlock.action=RESTART
wrapper.check.deadlock.output=FULL
# Out Of Memory detection.
# Ignore -verbose:class output to avoid false positives.
wrapper.filter.trigger.1000=[Loaded java.lang.OutOfMemoryError
wrapper.filter.action.1000=NONE
# Ignore -Xlog:class+load=level output to avoid false positives.
wrapper.filter.trigger.1001=[class,load] java.lang.OutOfMemoryError
wrapper.filter.action.1001=NONE
# (Simple match)
wrapper.filter.trigger.1002=java.lang.OutOfMemoryError
# (Only match text in stack traces if -XX:+PrintClassHistogram is being used.)
#wrapper.filter.trigger.1002=Exception in thread "*" java.lang.OutOfMemoryError
#wrapper.filter.allow_wildcards.1002=TRUE
wrapper.filter.action.1002=RESTART
wrapper.filter.message.1002=The JVM has run out of memory.
#********************************************************************
# Wrapper Email Notifications. (Requires Professional Edition)
#********************************************************************
# Common Event Email settings.
#wrapper.event.default.email.debug=TRUE
#wrapper.event.default.email.smtp.host=<SMTP_Host>
#wrapper.event.default.email.smtp.port=25
#wrapper.event.default.email.subject=[%WRAPPER_HOSTNAME%:%WRAPPER_NAME%:%WRAPPER_EVENT_NAME%] Event Notification
#wrapper.event.default.email.sender=<Sender email>
#wrapper.event.default.email.recipient=<Recipient email>
# Configure the log attached to event emails.
#wrapper.event.default.email.maillog=ATTACHMENT
#wrapper.event.default.email.maillog.lines=50
#wrapper.event.default.email.maillog.format=LPTM
#wrapper.event.default.email.maillog.loglevel=INFO
# Enable specific event emails.
#wrapper.event.wrapper_start.email=TRUE
#wrapper.event.jvm_prelaunch.email=TRUE
#wrapper.event.jvm_start.email=TRUE
#wrapper.event.jvm_started.email=TRUE
#wrapper.event.jvm_deadlock.email=TRUE
#wrapper.event.jvm_stop.email=TRUE
#wrapper.event.jvm_stopped.email=TRUE
#wrapper.event.jvm_restart.email=TRUE
#wrapper.event.jvm_failed_invocation.email=TRUE
#wrapper.event.jvm_max_failed_invocations.email=TRUE
#wrapper.event.jvm_kill.email=TRUE
#wrapper.event.jvm_killed.email=TRUE
#wrapper.event.jvm_unexpected_exit.email=TRUE
#wrapper.event.wrapper_stop.email=TRUE
# Specify custom mail content
wrapper.event.jvm_restart.email.body=The JVM was restarted.\n\nPlease check on its status.\n
#********************************************************************
# Wrapper Secure File Properties
#********************************************************************
# To enforce the principle of least privilege for files containing
# sensitive data, the Wrapper requires that all permissions granted
# to these files be explicitly allowed in the configuration.
# Please read the documentation for the full list of properties.
# Allow specific accounts or groups on Windows.
#wrapper.secure_file.check.windows.allowed_account.1=NT AUTHORITY\SYSTEM
#wrapper.secure_file.check.windows.allowed_account.2=BUILTIN\Administrators
# Allow specific groups on Unix systems.
#wrapper.secure_file.check.unix.allowed_group.1=<Group_Of_Users>
# Additional files to check for permissions (Requires Standard Edition)
#wrapper.secure_file.additional.1=<Secured_File>
#********************************************************************
# Wrapper Windows Service Properties
#********************************************************************
# WARNING - Do not modify any of these properties when an application
# using this configuration file has been installed as a service.
# Please uninstall the service before modifying this section.
# The service can then be reinstalled.
# Name of the service
wrapper.name=wildfly
# Display name of the service
wrapper.displayname=WildFly
# Description of the service
wrapper.description=WildFly Standalone
# Service dependencies. Add dependencies as needed starting from 1
wrapper.ntservice.dependency.1=
# Mode in which the service is installed.
# AUTO_START, DELAY_START (Requires Standard Edition) or DEMAND_START
wrapper.ntservice.starttype=AUTO_START
# Account to use when running the service.
# The default blank value will use LocalSystem, which is highly privileged
# account on Windows. Please read the documentation page for this property to
# learn about other account types that can be used.
wrapper.ntservice.account=
# Allow the current user to perform certain actions without being prompted for
# administrator credentials. (Requires Professional Edition)
#wrapper.ntservice.permissions.1.account=CURRENT_USER
#wrapper.ntservice.permissions.1.allow=START, STOP, PAUSE_RESUME
WildFly espera ser lo primero en ejecutarse cuando se inicia Java.
El MBean del Wrapper y la detección de interbloqueos (Deadlock) interactúan internamente con el código de registro (logging) de Java, lo que causa que el registro se inicialice antes de que WildFly tenga la oportunidad de hacerlo.
La propiedad org.tanukisoftware.wrapper.WrapperManager.waitLogManagerInitialized=true (introducida en la versión 3.7.0 del Wrapper) le indica al Wrapper que aplace las referencias al LogManager de Java hasta que WildFly lo haya inicializado.
WildFly realiza esta inicialización en un hilo en segundo plano durante el inicio.
El Wrapper espera primero a que se configure la propiedad del sistema java.util.logging.manager, por un máximo de tiempo definido por org.tanukisoftware.wrapper.WrapperManager.waitLogManagerInitialized.timeout (30 segundos por defecto).
Una vez detectada la propiedad, la clase LogManager debería inicializarse poco después, por lo que el Wrapper espera un tiempo adicional definido por org.tanukisoftware.wrapper.WrapperManager.waitLogManagerInitialized.delay (un segundo por defecto) antes de acceder a ella.
Los valores predeterminados son adecuados para la mayoría de los entornos, pero ambas propiedades se pueden ajustar si es necesario.
Para versiones del Wrapper anteriores a la versión 3.7.0, deberá deshabilitar tanto los MBeans del Wrapper como la detección de interbloqueos.
El registro del MBean puede deshabilitarse al establecer la propiedad del sistema -Dorg.tanukisoftware.wrapper.WrapperManager.mbean=false utilizando wrapper.java.additional.<n>. El uso de wrapper.app.property.<n> no funcionará.
La detección de interbloqueos se puede deshabilitar configurando la propiedad de configuración wrapper.check.deadlock en FALSE.
NOTA
Si utiliza las ediciones Estándar o Profesional, se habrá copiado una licencia predeterminada de 15 minutos como etc/wrapper-license.conf.
Deberá actualizar a una Licencia de Prueba, para Servidor o de Desarrollo para ejecutarlo durante más tiempo.
Ejecución
Para ejecutar en una consola:
Ejecute: bin/service.bat console
Para ejecutar como un Windows Service:
Instale el servicio con: bin/service.bat install
A continuación, inicie el servicio con: bin/service.bat start
Detenga el servicio con: bin/service.bat stop
Desinstale el servicio con: bin/service.bat remove
Para obtener una lista de los comandos disponibles:
Ejecute: bin/service.bat
Comentarios y Sugerencias
Si es un usuario avanzado de WildFly y tiene sugerencias para mejorar este documento, háganoslo saber en support@tanukisoftware.com.