Cette section décrit les étapes pour configurer rapidement Eclipse Jetty 12.0.36 ou 12.1.10. Les autres versions de la série Jetty 12 devraient fonctionner de manière similaire.
Télécharger Jetty
Téléchargez Jetty sous forme de fichier zip depuis Téléchargements Jetty.
Des versions spécifiques peuvent également être téléchargées depuis le dépôt Maven.
Nous travaillerons avec jetty-home-12.1.10.zip.
Extrayez l'archive pour obtenir un répertoire jetty-home-12.1.10 et, éventuellement, renommez-le selon vos préférences.
Jetty 12 ne souhaite rien modifier dans le répertoire home.
Créez un répertoire frère jetty-base-12, placez-vous dans ce répertoire et exécutez la commande suivante pour l'initialiser :
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.
Puis téléchargez le programme d'installation ou l'archive et installez-le ou extrayez-le.
Nous supposerons que vous utilisez l'édition Professional 64 bits sur Windows x86.
Intégration du Wrapper
Pour faciliter le placement des fichiers Wrapper requis, créez le script PowerShell suivant dans votre répertoire jetty-base-12 sous le nom updateWrapper.ps1.
Mettez à jour l'emplacement où vous avez installé ou extrait le Wrapper ci-dessus.
Le classpath, la classe principale de l'application et les paramètres de l'application sont tous générés dynamiquement à l'aide d'un script fourni après le fichier de configuration du Wrapper.
NOTE
La variable JAVA_HOME doit être définie, mais elle prendra par défaut la valeur de l'environnement système si elle y est définie.
Jetty 12 exige qu'un minimum de Java 17 soit spécifié.
Créez le fichier de configuration du Wrapper conf/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
#********************************************************************
# 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
#********************************************************************
# Environment
#********************************************************************
set.default.JAVA_HOME=(SetMe)
# JETTY_BASE and JETTY_HOME are set in wrapper-generated.conf
@include %WRAPPER_BIN_DIR%/../conf/wrapper-generated.conf
# Change the working dir used by java so Jetty is in its expected location.
# Setting JETTY_BASE relative to the fixed WRAPPER_BIN_DIR location helps make their meaning clear and avoid confusion when changing the working dir.
wrapper.working.dir=%JETTY_BASE%
#********************************************************************
# 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=%JETTY_BASE%/lang
#********************************************************************
# 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=%JETTY_BASE%/lib/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
# (See wrapper-generated.conf)
# 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=%JETTY_BASE%/lib
# 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=-Djava.io.tmpdir=%JETTY_BASE%/tmp
# Initial Java Heap Size (in MB)
#wrapper.java.initmemory=3
# Maximum Java Heap Size (in MB)
wrapper.java.maxmemory=256
# Application System Properties passed via the backend.
# Core Java System Properties must be passed using wrapper.java.additional.<n>.
wrapper.app.property.1=jetty.home=%JETTY_HOME%
wrapper.app.property.2=jetty.base=%JETTY_BASE%
# 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.WrapperSimpleApp
# Application parameters.
# Pass parameters via the backend instead of the command line.
#wrapper.app.parameter.backend=TRUE
# Add parameters as needed starting from 1
# (See wrapper-generated.conf)
#********************************************************************
# 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=PM
# Log Level for console output. (See docs for log levels)
wrapper.console.loglevel=INFO
# Log file to use for Wrapper output logging.
wrapper.logfile=%JETTY_BASE%/logs/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=Jetty 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=jetty
# Display name of the service
wrapper.displayname=Jetty
# Description of the service
wrapper.description=Jetty Server
# 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
Le fichier start.jar de Jetty 12 ne lance pas directement le serveur Jetty.
Il s'agit plutôt d'une application d'amorçage (bootstrap) utilisée pour générer dynamiquement la ligne de commande permettant de lancer un processus Java enfant qui exécute réellement le serveur Jetty.
Cela n'est pas idéal lors de l'exécution avec le Java Service Wrapper, car celui-ci n'est pas en mesure de surveiller directement l'instance Java qui exécute Jetty.
Jetty fournit un moyen d'extraire les composants de cette ligne de commande, et le script ci-dessous est utilisé pour générer un fragment de configuration conf/wrapper-generated.conf qui est inclus par le fichier conf/wrapper.conf ci-dessus.
Si vous apportez des modifications importantes à la configuration de votre application, vous devrez peut-être réexécuter ce script.
Dans le cas contraire, il devrait rester inchangé.
Créez le script PowerShell suivant dans votre répertoire jetty-base-12 sous le nom updateWrapperGeneratedConf.ps1.
$ErrorActionPreference = "Stop"
# Run from script's directory
$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
Set-Location $ScriptDir
# Jetty home argument check
$JETTY_HOME = if ($args.Count -ge 1) { $args[0] } else { "" }
if ([string]::IsNullOrWhiteSpace($JETTY_HOME)) {
Write-Error "ERROR: jetty.home directory not specified."
Write-Output "Usage: .\$($MyInvocation.MyCommand.Name) \path\to\jetty.home"
Exit 1
}
if (-not (Test-Path -Path $JETTY_HOME -PathType Container)) {
Write-Error "ERROR: '$JETTY_HOME' does not exist or is not a directory."
Exit 1
}
$StartJarPath = Join-Path $JETTY_HOME "start.jar"
if (-not (Test-Path -Path $StartJarPath -PathType Leaf)) {
Write-Error "ERROR: '$StartJarPath' not found."
Write-Error "Is '$JETTY_HOME' a valid Jetty home directory?"
Exit 1
}
$JETTY_BASE = "."
$CONF_DIR = Join-Path $JETTY_BASE "conf"
$ABS_JETTY_HOME = (Get-Item $JETTY_HOME).FullName
$ABS_JETTY_BASE = (Get-Item $JETTY_BASE).FullName
Write-Output "ABS_JETTY_HOME=$ABS_JETTY_HOME"
Write-Output "ABS_JETTY_BASE=$ABS_JETTY_BASE"
# Run dry-run from inside ABS_JETTY_BASE
function Invoke-DryRun {
param([string]$DryRunArg)
Push-Location $ABS_JETTY_BASE
try {
& java -jar "$ABS_JETTY_HOME/start.jar" $DryRunArg
} finally {
Pop-Location
}
}
$OPTS = Invoke-DryRun "--dry-run=opts"
$MAIN_CLASS = Invoke-DryRun "--dry-run=main"
$ARGS_OUTPUT = Invoke-DryRun "--dry-run=args"
$PATH_INFO = Invoke-DryRun "--dry-run=path"
$ENVS = try { Invoke-DryRun "--dry-run=envs" } catch { "" }
$CONF_JETTY_HOME = $ABS_JETTY_HOME -replace '\\', '/'
$CONF_JETTY_BASE = $ABS_JETTY_BASE -replace '\\', '/'
$ConfFile = Join-Path $CONF_DIR "wrapper-generated.conf"
$CurrentDate = Get-Date -Format "g"
# Helper function to sanitize text replacing paths
function Sanitize-Text {
param([string]$text)
if ([string]::IsNullOrEmpty($text)) { return "" }
# Remove any single quotes
$text = $text -replace "'", ""
# Escape paths for regex replacement
$escapedHome = [Regex]::Escape($ABS_JETTY_HOME)
$escapedBase = [Regex]::Escape($ABS_JETTY_BASE)
$text = $text -replace $escapedHome, "%JETTY_HOME%"
$text = $text -replace $escapedBase, "%JETTY_BASE%"
$text = $text -replace "file:///", "file://"
return $text
}
# Start writing the file
$ConfigContent = @"
# =============================================================
# AUTO-GENERATED Jetty 12 Java Service Wrapper config - $CurrentDate
# Regenerate with: .\$($MyInvocation.MyCommand.Name)
# =============================================================
set.JETTY_HOME=$CONF_JETTY_HOME
set.JETTY_BASE=$CONF_JETTY_BASE
# From --dry-run=path
"@
# Process PATH_INFO
$k = 1
if (-not [string]::IsNullOrWhiteSpace($PATH_INFO)) {
$cleanPathInfo = $PATH_INFO -replace "^--class-path\s+", ""
$entries = $cleanPathInfo -split [IO.Path]::PathSeparator
foreach ($entry in $entries) {
if (-not [string]::IsNullOrWhiteSpace($entry)) {
$entryClean = Sanitize-Text $entry.Trim()
$ConfigContent += "`nwrapper.java.classpath.$k=$entryClean"
$k++
}
}
}
$ConfigContent += @"
# App Main Class
wrapper.app.parameter.1=$MAIN_CLASS
# From --dry-run=args (properties + XMLs)
"@
# Process ARGS
$m = 100
if (-not [string]::IsNullOrWhiteSpace($ARGS_OUTPUT)) {
$argsList = $ARGS_OUTPUT -split "\s+"
foreach ($arg in $argsList) {
if (-not [string]::IsNullOrWhiteSpace($arg)) {
if ($arg -like "*addHiddenClasses*") {
$ConfigContent += "`nwrapper.app.parameter.$m=jetty.webapp.addHiddenClasses=org.eclipse.jetty.logging.,file://%JETTY_HOME%/lib/logging/,org.slf4j."
} else {
$argClean = Sanitize-Text $arg
$ConfigContent += "`nwrapper.app.parameter.$m=$argClean"
}
$m++
}
}
}
# Process ENVS
if (-not [string]::IsNullOrWhiteSpace($ENVS)) {
$ConfigContent += "`n`n# From --dry-run=envs (EEnn)"
$m = 1000
$envsList = $ENVS -split "\s+"
foreach ($arg in $envsList) {
if (-not [string]::IsNullOrWhiteSpace($arg)) {
$argClean = Sanitize-Text $arg
$ConfigContent += "`nwrapper.app.parameter.$m=$argClean"
$m++
}
}
}
# Output to file with UTF8 encoding (standard for config files)
$ConfigContent + "`n" | Out-File -FilePath $ConfFile -Encoding utf8
Write-Output "SUCCESS! Generated -> $ConfFile"
Depuis le répertoire jetty-base-12, exécutez cette commande :
Cette dérogation s'applique uniquement à cet appel et ne modifie pas votre configuration PowerShell.
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 conf/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.bat console
Pour exécuter en tant que Service Windows :
Installez le service avec : bin/service.bat install
Puis démarrez le service avec : bin/service.bat start
Arrêtez le service avec : bin/service.bat stop
Désinstallez le service avec : bin/service.bat remove
Pour une liste des commandes disponibles :
Exécutez : bin/service.bat
Vous pouvez consulter la sortie des journaux du Wrapper ainsi que toute sortie console de Java en suivant le fichier journal logs/wrapper.log.
Les autres fichiers journaux de Jetty se trouvent également dans ce répertoire.
Intégration d'Eclipse Jetty 11.0.x
Cette section décrit les étapes pour configurer rapidement Eclipse Jetty 11.0.26. Les autres versions de la série Jetty 11 devraient fonctionner de manière similaire.
Télécharger Jetty
Téléchargez Jetty sous forme de fichier zip depuis Téléchargements Jetty.
Des versions spécifiques peuvent également être téléchargées depuis le dépôt Maven.
Nous travaillerons avec jetty-home-11.0.26.zip.
Extrayez l'archive pour obtenir un répertoire jetty-home-11.0.26 et, éventuellement, renommez-le selon vos préférences.
Jetty 11 ne souhaite rien modifier dans le répertoire home.
Créez un répertoire frère jetty-base-11, placez-vous dans ce répertoire et exécutez la commande suivante pour l'initialiser :
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.
Puis téléchargez le programme d'installation ou l'archive et installez-le ou extrayez-le.
Nous supposerons que vous utilisez l'édition Professional 64 bits sur Windows x86.
Intégration du Wrapper
Pour faciliter le placement des fichiers Wrapper requis, créez le script PowerShell suivant dans votre répertoire jetty-base-11 sous le nom updateWrapper.ps1.
Mettez à jour l'emplacement où vous avez installé ou extrait le Wrapper ci-dessus.
Cette dérogation s'applique uniquement à cet appel et ne modifie pas votre configuration PowerShell.
La configuration utilise la méthode d'intégration 1.
Voir la note ci-dessous expliquant pourquoi start.jar n'est pas utilisé comme jar exécutable.
NOTE
- La variable JAVA_HOME doit être définie, mais elle prendra par défaut la valeur de l'environnement système si elle y est définie.
Jetty 11 exige qu'un minimum de Java 11 soit spécifié.
- Le fichier start.jar de Jetty est un jar exécutable.
En principe, nous aurions pu utiliser la méthode d'intégration 4 pour cette configuration, mais cela aurait nécessité de spécifier la première propriété d'application comme wrapper.app.parameter.1=%JETTY_HOME%/start.jar.
Cela se résoudrait en des valeurs différentes sur chaque machine et ne fonctionnerait pas avec la clé de licence lors de son utilisation.
Comme solution de contournement, le fichier start.jar est traité comme un jar ordinaire dans le classpath, et l'entrée Main-Class: org.eclipse.jetty.start.Main a été extraite du fichier Manifest pour être référencée directement.
Créez le fichier de configuration du Wrapper conf/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
#********************************************************************
# 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
#********************************************************************
# Environment
#********************************************************************
set.default.JAVA_HOME=(SetMe)
# Setting all relative paths next to the fixed WRAPPER_BIN_DIR location helps make their meaning clear.
set.JETTY_HOME=%WRAPPER_BIN_DIR%/../../jetty-home-11.0.26
set.JETTY_BASE=%WRAPPER_BIN_DIR%/..
# Change the working dir used by java so Jetty is in its expected location.
# Setting JETTY_BASE relative to the fixed WRAPPER_BIN_DIR location helps make their meaning clear and avoid confusion when changing the working dir.
wrapper.working.dir=%JETTY_BASE%
#********************************************************************
# 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=%JETTY_BASE%/lang
#********************************************************************
# 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=%JETTY_BASE%/lib/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=11
#wrapper.java.version.max=
# Java Classpath. Add class path elements as needed starting from 1
wrapper.java.classpath.1=%JETTY_HOME%/start.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=%JETTY_BASE%/lib
# 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=-Djava.io.tmpdir=%JETTY_BASE%/tmp
# Initial Java Heap Size (in MB)
#wrapper.java.initmemory=3
# Maximum Java Heap Size (in MB)
wrapper.java.maxmemory=256
# Application System Properties passed via the backend.
# Core Java System Properties must be passed using wrapper.java.additional.<n>.
wrapper.app.property.1=jetty.home=%JETTY_HOME%
wrapper.app.property.2=jetty.base=%JETTY_BASE%
# 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.WrapperSimpleApp
# 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=org.eclipse.jetty.start.Main
#********************************************************************
# 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=PM
# Log Level for console output. (See docs for log levels)
wrapper.console.loglevel=INFO
# Log file to use for Wrapper output logging.
wrapper.logfile=%JETTY_BASE%/logs/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=Jetty 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=jetty
# Display name of the service
wrapper.displayname=Jetty
# Description of the service
wrapper.description=Jetty Server
# 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
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 conf/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.bat console
Pour exécuter en tant que Service Windows :
Installez le service avec : bin/service.bat install
Puis démarrez le service avec : bin/service.bat start
Arrêtez le service avec : bin/service.bat stop
Désinstallez le service avec : bin/service.bat remove
Pour une liste des commandes disponibles :
Exécutez : bin/service.bat
Vous pouvez consulter la sortie des journaux du Wrapper ainsi que toute sortie console de Java en suivant le fichier journal logs/wrapper.log.
Les autres fichiers journaux de Jetty se trouvent également dans ce répertoire.
Intégration d'Eclipse Jetty 10.0.x
Cette section décrit les étapes pour configurer rapidement Eclipse Jetty 10.0.26. Les autres versions de la série Jetty 10 devraient fonctionner de manière similaire.
Télécharger Jetty
Téléchargez Jetty sous forme de fichier zip depuis Téléchargements Jetty.
Des versions spécifiques peuvent également être téléchargées depuis le dépôt Maven.
Nous travaillerons avec jetty-home-10.0.26.zip.
Extrayez l'archive pour obtenir un répertoire jetty-home-10.0.26 et, éventuellement, renommez-le selon vos préférences.
Jetty 10 ne souhaite rien modifier dans le répertoire home.
Créez un répertoire frère jetty-base-10, placez-vous dans ce répertoire et exécutez la commande suivante pour l'initialiser :
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.
Puis téléchargez le programme d'installation ou l'archive et installez-le ou extrayez-le.
Nous supposerons que vous utilisez l'édition Professional 64 bits sur Windows x86.
Intégration du Wrapper
Pour faciliter le placement des fichiers Wrapper requis, créez le script PowerShell suivant dans votre répertoire jetty-base-10 sous le nom updateWrapper.ps1.
Mettez à jour l'emplacement où vous avez installé ou extrait le Wrapper ci-dessus.
Cette dérogation s'applique uniquement à cet appel et ne modifie pas votre configuration PowerShell.
La configuration utilise la méthode d'intégration 1.
Voir la note ci-dessous expliquant pourquoi start.jar n'est pas utilisé comme jar exécutable.
NOTE
- La variable JAVA_HOME doit être définie, mais elle prendra par défaut la valeur de l'environnement système si elle y est définie.
Jetty 10 exige qu'un minimum de Java 11 soit spécifié.
- Le fichier start.jar de Jetty est un jar exécutable.
En principe, nous aurions pu utiliser la méthode d'intégration 4 pour cette configuration, mais cela aurait nécessité de spécifier la première propriété d'application comme wrapper.app.parameter.1=%JETTY_HOME%/start.jar.
Cela se résoudrait en des valeurs différentes sur chaque machine et ne fonctionnerait pas avec la clé de licence lors de son utilisation.
Comme solution de contournement, le fichier start.jar est traité comme un jar ordinaire dans le classpath, et l'entrée Main-Class: org.eclipse.jetty.start.Main a été extraite du fichier Manifest pour être référencée directement.
Créez le fichier de configuration du Wrapper conf/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
#********************************************************************
# 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
#********************************************************************
# Environment
#********************************************************************
set.default.JAVA_HOME=(SetMe)
# Setting all relative paths next to the fixed WRAPPER_BIN_DIR location helps make their meaning clear.
set.JETTY_HOME=%WRAPPER_BIN_DIR%/../../jetty-home-10.0.26
set.JETTY_BASE=%WRAPPER_BIN_DIR%/..
# Change the working dir used by java so Jetty is in its expected location.
# Setting JETTY_BASE relative to the fixed WRAPPER_BIN_DIR location helps make their meaning clear and avoid confusion when changing the working dir.
wrapper.working.dir=%JETTY_BASE%
#********************************************************************
# 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=%JETTY_BASE%/lang
#********************************************************************
# 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=%JETTY_BASE%/lib/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=11
#wrapper.java.version.max=
# Java Classpath. Add class path elements as needed starting from 1
wrapper.java.classpath.1=%JETTY_HOME%/start.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=%JETTY_BASE%/lib
# 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=-Djava.io.tmpdir=%JETTY_BASE%/tmp
# Initial Java Heap Size (in MB)
#wrapper.java.initmemory=3
# Maximum Java Heap Size (in MB)
wrapper.java.maxmemory=256
# Application System Properties passed via the backend.
# Core Java System Properties must be passed using wrapper.java.additional.<n>.
wrapper.app.property.1=jetty.home=%JETTY_HOME%
wrapper.app.property.2=jetty.base=%JETTY_BASE%
# 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.WrapperSimpleApp
# 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=org.eclipse.jetty.start.Main
#********************************************************************
# 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=PM
# Log Level for console output. (See docs for log levels)
wrapper.console.loglevel=INFO
# Log file to use for Wrapper output logging.
wrapper.logfile=%JETTY_BASE%/logs/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=Jetty 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=jetty
# Display name of the service
wrapper.displayname=Jetty
# Description of the service
wrapper.description=Jetty Server
# 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
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 conf/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.bat console
Pour exécuter en tant que Service Windows :
Installez le service avec : bin/service.bat install
Puis démarrez le service avec : bin/service.bat start
Arrêtez le service avec : bin/service.bat stop
Désinstallez le service avec : bin/service.bat remove
Pour une liste des commandes disponibles :
Exécutez : bin/service.bat
Vous pouvez consulter la sortie des journaux du Wrapper ainsi que toute sortie console de Java en suivant le fichier journal logs/wrapper.log.
Les autres fichiers journaux de Jetty se trouvent également dans ce répertoire.
Intégration d'Eclipse Jetty 9.4.x
Cette section décrit les étapes pour configurer rapidement Eclipse Jetty 9.4.58.v20250814. Les autres versions de la série Jetty 9 devraient fonctionner de manière similaire.
Télécharger Jetty
Téléchargez Jetty sous forme de fichier zip depuis Téléchargements Jetty.
Des versions spécifiques peuvent également être téléchargées depuis la page des archives.
Nous travaillerons avec jetty-distribution-9.4.58.v20250814.zip.
Extrayez l'archive pour obtenir un répertoire jetty-distribution-9.4.58.v20250814 et, éventuellement, renommez-le selon vos préférences.
Jetty 9 ne souhaite rien modifier dans le répertoire home.
Créez un répertoire frère jetty-base-9, placez-vous dans ce répertoire et exécutez la commande suivante pour l'initialiser :
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.
Puis téléchargez le programme d'installation ou l'archive et installez-le ou extrayez-le.
Nous supposerons que vous utilisez l'édition Professional 64 bits sur Windows x86.
Intégration du Wrapper
Pour faciliter le placement des fichiers Wrapper requis, créez le script PowerShell suivant dans votre répertoire jetty-base-9 sous le nom updateWrapper.ps1.
Mettez à jour l'emplacement où vous avez installé ou extrait le Wrapper ci-dessus.
Cette dérogation s'applique uniquement à cet appel et ne modifie pas votre configuration PowerShell.
La configuration utilise la méthode d'intégration 1.
Voir la note ci-dessous expliquant pourquoi start.jar n'est pas utilisé comme jar exécutable.
NOTE
- La variable JAVA_HOME doit être définie, mais elle prendra par défaut la valeur de l'environnement système si elle y est définie.
Jetty 9 exige qu'un minimum de Java 8 soit spécifié.
- Le fichier start.jar de Jetty est un jar exécutable.
En principe, nous aurions pu utiliser la méthode d'intégration 4 pour cette configuration, mais cela aurait nécessité de spécifier la première propriété d'application comme wrapper.app.parameter.1=%JETTY_HOME%/start.jar.
Cela se résoudrait en des valeurs différentes sur chaque machine et ne fonctionnerait pas avec la clé de licence lors de son utilisation.
Comme solution de contournement, le fichier start.jar est traité comme un jar ordinaire dans le classpath, et l'entrée Main-Class: org.eclipse.jetty.start.Main a été extraite du fichier Manifest pour être référencée directement.
Créez le fichier de configuration du Wrapper conf/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
#********************************************************************
# 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 ../conf/wrapper-license.conf
@include.optional ../conf/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
#********************************************************************
# Environment
#********************************************************************
set.default.JAVA_HOME=(SetMe)
# Setting all relative paths next to the fixed WRAPPER_BIN_DIR location helps make their meaning clear.
set.JETTY_HOME=%WRAPPER_BIN_DIR%/../../jetty-distribution-9.4.58.v20250814
set.JETTY_BASE=%WRAPPER_BIN_DIR%/..
# Change the working dir used by java so Jetty is in its expected location.
# Setting JETTY_BASE relative to the fixed WRAPPER_BIN_DIR location helps make their meaning clear and avoid confusion when changing the working dir.
wrapper.working.dir=%JETTY_BASE%
#********************************************************************
# 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=%JETTY_BASE%/lang
#********************************************************************
# 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=%JETTY_BASE%/lib/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
wrapper.java.classpath.1=%JETTY_HOME%/start.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=%JETTY_BASE%/lib
# 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=-Djava.io.tmpdir=%JETTY_BASE%/tmp
# Initial Java Heap Size (in MB)
#wrapper.java.initmemory=3
# Maximum Java Heap Size (in MB)
#wrapper.java.maxmemory=64
# Application System Properties passed via the backend.
# Core Java System Properties must be passed using wrapper.java.additional.<n>.
wrapper.app.property.1=jetty.home=%JETTY_HOME%
wrapper.app.property.2=jetty.base=%JETTY_BASE%
# 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.WrapperSimpleApp
# 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=org.eclipse.jetty.start.Main
wrapper.app.parameter.2=jetty.state=%JETTY_BASE%/jetty-echo.state
wrapper.app.parameter.3=jetty-started.xml
#********************************************************************
# 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=PM
# Log Level for console output. (See docs for log levels)
wrapper.console.loglevel=INFO
# Log file to use for Wrapper output logging.
wrapper.logfile=%JETTY_BASE%/logs/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=Jetty 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=jetty
# Display name of the service
wrapper.displayname=Jetty
# Description of the service
wrapper.description=Jetty Server
# 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
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 conf/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.bat console
Pour exécuter en tant que Service Windows :
Installez le service avec : bin/service.bat install
Puis démarrez le service avec : bin/service.bat start
Arrêtez le service avec : bin/service.bat stop
Désinstallez le service avec : bin/service.bat remove
Pour une liste des commandes disponibles :
Exécutez : bin/service.bat
Vous pouvez consulter la sortie des journaux du Wrapper ainsi que toute sortie console de Java en suivant le fichier journal logs/wrapper.log.
Les autres fichiers journaux de Jetty se trouvent également dans ce répertoire.
Demande de commentaires
Si vous êtes un utilisateur avancé de Jetty et avez des suggestions pour améliorer ce document, veuillez nous en informer à support@tanukisoftware.com.