Java Service Wrapper Revision History.
--------------------------------------
3.5.55
* Add new set of properties wrapper.java.module_path.<n>,
wrapper.java.upgrade_module_path.<n> and wrapper.java.module.<n> to simplify
the configuration of Java modules (requires Java version 9 or above).
* Add a module descriptor to wrapper.jar. Applications using Java 9 and above
can use the new module 'org.tanukisoftware.wrapper', which being a named
module, allows the inclusion of wrapper.jar into custom runtime images, using
jlink. With older versions of Java, the module descriptor is simply ignored.
* Add new property wrapper.jarfile to specify the location of wrapper.jar. This
property allows the Wrapper to identify its jar file more reliably and to
reference it in either the classpath or module path. wrapper.jarfile is
mandatory when using modules.
* Add new steps before launching the Java Application to help prepare the Java
command line and detect syntax issues early. The first step is a query to the
'org.tanukisoftware.wrapper.bootstrap.WrapperBootstrap' class, while the
second step is to execute the Java command line with the --dry-run option.
The output can be controlled with the wrapper.java.query.loglevel property.
* Add the ability to interrupt the 'java -version', bootstrap and --dry-run
calls with signals such as CTRL-C or CTRL-CLOSE if they are slow to complete.
* Add new directive #variables.expand to enable or disable variables expansion
for sections of the configuration file.
* (Standard) Automatically disable deadlock checks when the java.management
module is not available. This can occur with custom runtime images.
Previously the JVM would stop with a "Server daemon died!" error.
* (Standard) Improve collection of performance statistics and fix a minor
memory leak.
* Improve behavior when the Java process is forcibly terminated by an external
process or when the backend communication between the Wrapper and its
controlled JVM is interrupted.
* On Windows, the paths to the Wrapper binary and configuration file are now
converted to their long form before creating the service command line. This
is done to ensure that paths are always correctly quoted and thus avoid the
following problem: in some cases, Windows replaces short paths existing in
the registry with their long form, without adding quotes. This operation
could result in invalid command lines where paths containing spaces would be
interpreted as muliple arguments. For installations made with earlier
versions of the Wrapper, a message has been added when starting the service
if the command line contains unquoted short paths to warn of such issue.
Reinstalling the service is then recommended.
* Fix wrapper.ntservice.preshutdown property being ignored on Windows. Since
3.5.42.
* Fix warnings about undefined environment variables not being reported when
used in values of property lists.
* Fix issue where setting wrapper.disable_console_input to TRUE would prevent
the Java process from launching as a group leader, resulting in less
consistent signal handling (e.g. double thread dump triggered in response to
a QUIT signal).
* Restore checks (introduced in 3.5.0 and disabled in 3.5.5) to display an
error and prevent the Wrapper from starting if the batch or shell scripts
being used are based on the TestWrapper demo application.
* Add a warning when an old version of a Windows Batch Script is used to start
the Wrapper (previously this warning was only for the Unix Shell Script). On
Unix, the script version used to be passed via a command line property, but
an environment variable is now used to limit the size of the command line.
* Change encoding of src/conf/wrapper.conf.in_ja template configuration file to
UTF-8.
3.5.54
* Fix issue where the unit configuration file for systemd was created using the
value of the APP_NAME variable declared in the main shell script ignoring any
override of the variable in the .shconf file. When the value of APP_NAME
differed between the two scripts, it caused the installation or removal of
the service to fail. Since 3.5.47.
* Fix cases where the Wrapper output was duplicated in the JVM output when
running in Docker.
* Increase the responsiveness to console output from the Java process. To avoid
high cpu usage, the Wrapper goes to sleep when there is no output from the
Java process. Output from Java is stored in the stdout pipe until read, but
will cause the Java process to block when full. Normally this was not a
problem, but newer MacOS versions appear to have reduced the pipe size to a
very small size.
* Support for clean shutdown of the Wrapper running as a console when it
receives a CTRL+CLOSE signal on Windows. This signal is generated when
closing the console either manually or from the Task Manager. Previously, the
Wrapper process was simply interrupted, the Java side of the Wrapper detected
it and requested the Java application to shutdown cleanly. However, at this
point, any log output were no longer caught by the Wrapper logging system.
Note that the CTRL+CLOSE signal cannot be ignored and is therefore not
affected by wrapper.ignore_signals.
* Change the default value of wrapper.jvm_terminate.timeout to 0 (which means
never time out). Previously the default value was 10 seconds and 5 additional
seconds were added to the configured value. These 5 seconds are no longer
added, but values lower than 5 seconds are rounded up to 5 to give enough
time for the JVM to terminate in most scenarios. In some rare situations,
like when the memory of the system is saturated, the completion of the Java
process may take up to several minutes. In such cases, the default behavior
is now to keep waiting, as the alternative would be to stop the Wrapper,
which would negate any chance of restarting the application.
* Increase the time to wait before deciding that the thread processing stdin
it not responding. In very rare cases where the thread was slow, this could
cause console input to be disabled.
* Comment out the declaration of _PASS_THROUGH at the top of AppCommand.bat.in
to make it consistent with other script templates. When commented, this
variable defaults to 'false', which means that any argument after the script
command are ignored. Previously the value was 'app_args' allowing arguments
to be passed to the Java Application. When upgrading the Wrapper, if your
application was using passthrough arguments, please uncomment the property to
retain compatibility.
* (Standard) Improve the reported message when a Windows file share fails to
map after an attempt to mount it in the background.
3.5.53
* (Standard) Fix a segmentation fault on UNIX systems when the LANG environment
variable is not set.
* Do not roll the log file when it is empty.
* Fix a problem with the OSX installer where the /usr/local/opt/wrapper link to
to the latest installed version was not being created if the /usr/local/opt
directory did not already exist.
* (Standard) Improve the reported message when a Windows file share already
exists and it was mapped manually from the File Explorer, this is a different
error than when the share was mapped from a previous Wrapper invocation.
3.5.52
* Fix rare cases where the Wrapper would fail to initialize stdin resulting in
a "Bad file descriptor" error.
* Deprecate wrapper.disable_console_input in favour of wrapper.console_input.
The new property defaults to 'AUTO', a mode that automatically disables the
handling of stdin if it is not connected to something to read (e.g. when the
Wrapper was launched in the background, or when running in a Docker container
without TTY). This is in order to reduce CPU usage.
* Add a check when starting as a Windows Service to make sure that its name has
not changed in the configuration since the service was installed. If the
name has changed, the Wrapper wi