Intégration rapide de WildFly (Linux / UNIX)

Intégration de WildFly 40.0.x

Cette section décrit les étapes pour démarrer rapidement avec WildFly 40.0.0. Les autres versions devraient fonctionner de manière similaire.

Cette configuration est basée sur le lancement de WildFly en tant que serveur autonome.

Télécharger WildFly

Téléchargez la distribution WildFly au format tgz depuis leur page de téléchargements. Nous travaillerons avec wildfly-40.0.0.Final.tar.gz.

Extrayez l'archive pour obtenir un répertoire wildfly-40.0.0.Final, et renommez-le éventuellement selon vos préférences.

Télécharger le Wrapper

Les étapes suivantes sont conçues pour fonctionner avec la version 3.7.0 du Java Service Wrapper. L'utilisation de versions antérieures est possible, mais nécessitera probablement quelques modifications.

Choisissez l'édition à utiliser (Professional, Standard ou Community), et sélectionnez la plateforme, le nombre de bits et l'architecture cibles. Ensuite, téléchargez l'installateur ou l'archive et installez-le ou extrayez-le. Nous supposerons que vous utilisez l'édition Professional 64 bits sur Linux x86.

Intégration du Wrapper

Pour faciliter le placement des fichiers Wrapper requis, créez le script shell suivant dans votre répertoire extrait wildfly-40.0.0.Final sous le nom updateWrapper.sh. Mettez à jour l'emplacement où vous avez installé ou extrait le Wrapper ci-dessus. N'oubliez pas de le rendre exécutable.

Nous avons essayé de suivre la structure de répertoires existante de WildFly, de sorte que tous les fichiers du Wrapper se trouvent dans un répertoire bin/wrapper. Les fichiers journaux se trouveront dans standalone/log.

#!/bin/sh
WRAPPER_HOME=../wrapper-linux-x86-64-3.7.0-pro
WILDFLY_HOME=.
WRAPPER_SCRIPT=service.sh

mkdir -p ${WILDFLY_HOME}/bin/wrapper
if [ -d ${WRAPPER_HOME}/lang ]
then
    cp -n ${WRAPPER_HOME}/lang/wrapper_*.mo ${WILDFLY_HOME}/bin/wrapper/.
    cp -n ${WRAPPER_HOME}/lang/wrapperjni_*.mo ${WILDFLY_HOME}/bin/wrapper/.
fi
if [ -f ${WRAPPER_HOME}/src/conf/wrapper-license-time.conf ]
then
    cp -n ${WRAPPER_HOME}/src/conf/wrapper-license-time.conf ${WILDFLY_HOME}/bin/wrapper/wrapper-license.conf
fi

cp ${WRAPPER_HOME}/bin/wrapper ${WILDFLY_HOME}/bin/wrapper/wrapper
cp ${WRAPPER_HOME}/lib/wrapper.jar ${WILDFLY_HOME}/bin/wrapper/.
cp ${WRAPPER_HOME}/lib/libwrapper.* ${WILDFLY_HOME}/bin/wrapper/.
cp ${WRAPPER_HOME}/src/bin/App.sh.in ${WILDFLY_HOME}/bin/${WRAPPER_SCRIPT}

sed -i '' \
  -e 's|@app\.name@|wildfly|g' \
  -e 's|@app\.long\.name@|WildFly|g' \
  -e 's|WRAPPER_CMD="\./wrapper"|WRAPPER_CMD="\./wrapper/wrapper"|g' \
  -e 's|WRAPPER_CONF="\.\./conf/wrapper\.conf"|WRAPPER_CONF="\./wrapper/wrapper\.conf"|g' \
  ${WILDFLY_HOME}/bin/${WRAPPER_SCRIPT}
chmod +x ${WILDFLY_HOME}/bin/${WRAPPER_SCRIPT}

Exécutez le script :

./updateWrapper.sh

La configuration utilise la méthode d'intégration 4.

NOTE

La variable JAVA_HOME doit être définie, mais prendra par défaut la valeur de l'environnement système si elle y est définie. La série WildFly 40.0.x nécessite qu'un minimum de Java 17 soit spécifié.

Créez le fichier de configuration du Wrapper sous le nom bin/wrapper/wrapper.conf avec le contenu suivant :

@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 s'attend à être la toute première chose exécutée lors du lancement de Java. Les MBean et la détection des interblocages du Wrapper touchent en interne le code de journalisation Java, ce qui provoque l'initialisation de la journalisation avant que WildFly n'ait l'occasion de le faire. La propriété org.tanukisoftware.wrapper.WrapperManager.waitLogManagerInitialized=true (introduite dans la version 3.7.0 du Wrapper) indique au Wrapper de différer les références au LogManager Java jusqu'à ce que WildFly l'ait initialisé.

WildFly effectue cette initialisation dans un thread d'arrière-plan au démarrage. Le Wrapper attend d'abord que la propriété système java.util.logging.manager soit définie, pendant au plus org.tanukisoftware.wrapper.WrapperManager.waitLogManagerInitialized.timeout (30 secondes par défaut). Une fois la propriété détectée, la classe LogManager devrait être initialisée peu après, de sorte que le Wrapper attend encore org.tanukisoftware.wrapper.WrapperManager.waitLogManagerInitialized.delay (une seconde par défaut) avant d'y accéder. Les valeurs par défaut conviennent à la plupart des environnements, mais les deux propriétés peuvent être ajustées si nécessaire.

Pour les versions du Wrapper antérieures à la version 3.7.0 du Wrapper, vous devrez à la fois désactiver les MBean du Wrapper et désactiver la détection des interblocages. L'enregistrement des MBean peut être désactivé en définissant la propriété système -Dorg.tanukisoftware.wrapper.WrapperManager.mbean=false à l'aide de wrapper.java.additional.<n> ; wrapper.app.property.<n> ne fonctionnera pas. La détection des interblocages peut être désactivée en définissant la propriété de configuration wrapper.check.deadlock à FALSE.

NOTE

Si vous utilisez la Standard Edition ou la Professional Edition, une licence par défaut de 15 minutes aura été copiée en tant que etc/wrapper-license.conf. Vous devrez la mettre à jour avec une licence Trial, Server ou Development pour l'exécuter plus longtemps.

Exécution

Pour exécuter dans une console :

  • Exécutez : bin/service.sh console

Pour exécuter en tant que daemon (service) :

  • Installez le service avec : bin/service.sh install

  • Puis démarrez le service avec : bin/service.sh start

  • Arrêtez le service avec : bin/service.sh stop

  • Désinstallez le service avec : bin/service.sh remove

Pour une liste des commandes disponibles :

  • Exécutez : bin/service.sh

Intégration de WildFly 26.1.x

Cette section décrit les étapes pour démarrer rapidement avec WildFly 26.1.3. Les autres versions devraient fonctionner de manière similaire.

Cette configuration est basée sur le lancement de WildFly en tant que serveur autonome.

Télécharger WildFly

Téléchargez la distribution WildFly EE 8 Full & Web au format tgz depuis leur page de téléchargements. Nous travaillerons avec wildfly-26.1.3.Final.tar.gz.

Extrayez l'archive pour obtenir un répertoire wildfly-26.1.3.Final, et renommez-le éventuellement selon vos préférences.

Télécharger le Wrapper

Les étapes suivantes sont conçues pour fonctionner avec la version 3.7.0 du Java Service Wrapper. L'utilisation de versions antérieures est possible, mais nécessitera probablement quelques modifications.

Choisissez l'édition à utiliser (Professional, Standard ou Community), et sélectionnez la plateforme, le nombre de bits et l'architecture cibles. Ensuite, téléchargez l'installateur ou l'archive et installez-le ou extrayez-le. Nous supposerons que vous utilisez l'édition Professional 64 bits sur Linux x86.

Intégration du Wrapper

Pour faciliter le placement des fichiers Wrapper requis, créez le script shell suivant dans votre répertoire extrait wildfly-26.1.3.Final sous le nom updateWrapper.sh. Mettez à jour l'emplacement où vous avez installé ou extrait le Wrapper ci-dessus. N'oubliez pas de le rendre exécutable.

Nous avons essayé de suivre la structure de répertoires existante de WildFly, de sorte que tous les fichiers du Wrapper se trouvent dans un répertoire bin/wrapper. Les fichiers journaux se trouveront dans standalone/log.

#!/bin/sh
WRAPPER_HOME=../wrapper-linux-x86-64-3.7.0-pro
WILDFLY_HOME=.
WRAPPER_SCRIPT=service.sh

mkdir -p ${WILDFLY_HOME}/bin/wrapper
if [ -d ${WRAPPER_HOME}/lang ]
then
    cp -n ${WRAPPER_HOME}/lang/wrapper_*.mo ${WILDFLY_HOME}/bin/wrapper/.
    cp -n ${WRAPPER_HOME}/lang/wrapperjni_*.mo ${WILDFLY_HOME}/bin/wrapper/.
fi
if [ -f ${WRAPPER_HOME}/src/conf/wrapper-license-time.conf ]
then
    cp -n ${WRAPPER_HOME}/src/conf/wrapper-license-time.conf ${WILDFLY_HOME}/bin/wrapper/wrapper-license.conf
fi

cp ${WRAPPER_HOME}/bin/wrapper ${WILDFLY_HOME}/bin/wrapper/wrapper
cp ${WRAPPER_HOME}/lib/wrapper.jar ${WILDFLY_HOME}/bin/wrapper/.
cp ${WRAPPER_HOME}/lib/libwrapper.* ${WILDFLY_HOME}/bin/wrapper/.
cp ${WRAPPER_HOME}/src/bin/App.sh.in ${WILDFLY_HOME}/bin/${WRAPPER_SCRIPT}

sed -i '' \
  -e 's|@app\.name@|wildfly|g' \
  -e 's|@app\.long\.name@|WildFly|g' \
  -e 's|WRAPPER_CMD="\./wrapper"|WRAPPER_CMD="\./wrapper/wrapper"|g' \
  -e 's|WRAPPER_CONF="\.\./conf/wrapper\.conf"|WRAPPER_CONF="\./wrapper/wrapper\.conf"|g' \
  ${WILDFLY_HOME}/bin/${WRAPPER_SCRIPT}
chmod +x ${WILDFLY_HOME}/bin/${WRAPPER_SCRIPT}

Exécutez le script :

./updateWrapper.sh

La configuration utilise la méthode d'intégration 4.

NOTE

La variable JAVA_HOME doit être définie, mais prendra par défaut la valeur de l'environnement système si elle y est définie. La série WildFly 26.1.x nécessite qu'un minimum de Java 8 soit spécifié.

Créez le fichier de configuration du Wrapper sous le nom bin/wrapper/wrapper.conf avec le contenu suivant :

@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 s'attend à être la toute première chose exécutée lors du lancement de Java. Les MBean et la détection des interblocages du Wrapper touchent en interne le code de journalisation Java, ce qui provoque l'initialisation de la journalisation avant que WildFly n'ait l'occasion de le faire. La propriété org.tanukisoftware.wrapper.WrapperManager.waitLogManagerInitialized=true (introduite dans la version 3.7.0 du Wrapper) indique au Wrapper de différer les références au LogManager Java jusqu'à ce que WildFly l'ait initialisé.

WildFly effectue cette initialisation dans un thread d'arrière-plan au démarrage. Le Wrapper attend d'abord que la propriété système java.util.logging.manager soit définie, pendant au plus org.tanukisoftware.wrapper.WrapperManager.waitLogManagerInitialized.timeout (30 secondes par défaut). Une fois la propriété détectée, la classe LogManager devrait être initialisée peu après, de sorte que le Wrapper attend encore org.tanukisoftware.wrapper.WrapperManager.waitLogManagerInitialized.delay (une seconde par défaut) avant d'y accéder. Les valeurs par défaut conviennent à la plupart des environnements, mais les deux propriétés peuvent être ajustées si nécessaire.

Pour les versions du Wrapper antérieures à la version 3.7.0 du Wrapper, vous devrez à la fois désactiver les MBean du Wrapper et désactiver la détection des interblocages. L'enregistrement des MBean peut être désactivé en définissant la propriété système -Dorg.tanukisoftware.wrapper.WrapperManager.mbean=false à l'aide de wrapper.java.additional.<n> ; wrapper.app.property.<n> ne fonctionnera pas. La détection des interblocages peut être désactivée en définissant la propriété de configuration wrapper.check.deadlock à FALSE.

NOTE

Si vous utilisez la Standard Edition ou la Professional Edition, une licence par défaut de 15 minutes aura été copiée en tant que etc/wrapper-license.conf. Vous devrez la mettre à jour avec une licence Trial, Server ou Development pour l'exécuter plus longtemps.

Exécution

Pour exécuter dans une console :

  • Exécutez : bin/service.sh console

Pour exécuter en tant que daemon (service) :

  • Installez le service avec : bin/service.sh install

  • Puis démarrez le service avec : bin/service.sh start

  • Arrêtez le service avec : bin/service.sh stop

  • Désinstallez le service avec : bin/service.sh remove

Pour une liste des commandes disponibles :

  • Exécutez : bin/service.sh

Demande de commentaires

Si vous êtes un utilisateur avancé de WildFly et avez des suggestions pour améliorer ce document, veuillez nous en informer à support@tanukisoftware.com.