-
The license was revised for this version
to include a copyright omission. This change is to be retroactively applied
to all versions of the Java Service Wrapper starting with version 3.0.0.
The changes should have no effect on users.
-
The Online documentation and web site were both reworked. The logo has
been updated so that Duke is no longer used. The new online
site now
has the ability for users to append comments to any page.
-
Added a new batch file which accepts commands like the UNIX shell script.
The new file is offered as an alternative to the default batch files, and
can be found at src/bin/AppCommand.bat.in.
Thanks to Mike Castle for donating the new script. See the new
Command-Based Script
section for more information.
-
The Windows version of the Wrapper was not correctly registering that it
would accept SHUTDOWN messages when running as a service. The Wrapper
was getting the message anyway so this should not change functionality.
Thanks to Jason Tishler for noticing this and sending in a patch.
-
Add a new property, wrapper.native_library,
which can be used to specify the base name of the native library which is
loaded by the WrapperManager class.
-
Modify the WrapperManager class so it now stores references to System.out
and System.err on initialization and always writes to those stored streams.
This makes sure that all Wrapper console output always goes to the
wrapper.log file even if user code overrides those streams with calls to
System.setOut and System.setErr. This was necessary to prevent deadlocks
in such user code from affecting the functionality of the Wrapper.
-
Fixed a problem where some environment variables where not being correctly
loaded from the system registry when running as an NT service. Big thanks
to Eric Smith for tracking this down and submitting a patch. It turns out
that the putenv function was not being used correctly.
-
Modified the way the wrapper.conf file is loaded so it will now read the
contents correctly even if the line feeds in the file are incorrect for
the current platform. Windows line feeds had been causing problems when
used on UNIX platforms.
Feature Request #829896.
-
Added a new property, wrapper.ntservice.console,
which allows a console to be displayed when running as an NT service.
-
Fixed a problem where the request thread dump on failed JVM exit
feature had never worked when running as an NT service.
Bug #831775.
-
Add a new property, wrapper.console.title,
which makes it possible to set the title of the console in which the Wrapper
is currently running. This currently only works on Windows platforms.
-
Added a new method, setConsoleTitle, to the
WrapperManager class which
enables the application to dynamically set the console title. Like the
wrapper.console.title
property, this only works on Windows platforms.
-
Improved the algorithm of the request thread dump on failed JVM exit
feature so that extremely large thread dumps will not be truncated when
the JVM is killed.
-
Fix a problem where CTRL-C was being ignored by the WrapperManager if a
WrapperListener is never registered. This is not possible if the Wrapper
is being used correctly but never the less a user did come across it.
-
Add some additional debug output to help identify the cause of problems
loading the native library.
-
The WrapperManager class now checks to make sure that its current version
matches the version of the native library and Wrapper. If there are any
discrepancies found then appropriate warnings will be displayed, but the
Application will still be allowed to start. This was added to make obvious
the cause of problems resulting from mismatched versions.
-
Added a new property wrapper.use_system_time system time. By setting this
property to false, the Wrapper will start using a new experimental timer
which uses a background thread to manage time rather than the system time.
This has a number of advantages over using the system time and should give
most users even more reliable behavior when the system is under high load
or there are changes being made to the system time. The timer is very
critical to the operation of the Wrapper so the old behavior is left as
the default for the time being until this feature has had the chance to be
"time" tested. If all goes well then this will be enabled as the default
in a future version of the Wrapper.
A pair of related properties, wrapper.timer_fast_threshold and
wrapper.timer_slow_threshold
were also added to aid in debugging.
-
Rework the logging code so it is now thread safe. The addition of the
timer thread means that there is now more than a single thread accessing
that code. This was causing problems as the two threads tried to use the
same buffers. As part of this change, a new format variable 'D' was added
to display the thread which is doing the logging.
-
Fix a problem where a thread dump would be invoked if the
request thread dump on failed JVM exit
was enabled and the user forced an immediate shutdown by pressing CTRL-C
more than once.
-
Add getUser and getInteractiveUser methods to the WrapperManager
class to make it possible for user code to query information about the user
running Wrapper or the user who is interacting with the Wrapper and its JVM.
Feature Request #812175.
-
The Wrapper will now always exit with the exit code used to terminate the JVM
whether System.exit is used or WrapperManager.stop.
When running as an NT service the Wrapper now correctly returns the correct
exit code to the service manager so failure recovery tools should now work
correctly.
Feature Request #852491.
-
Add a status command to the UNIX shell script which can be used to find out
whether or not the wrapper is currently running. Patch submitted by
Joseph Benavidez.
-
Modify the WrapperSimpleApp and WrapperStartStopApp so that the main method
of a class is located even if it exists in a parent class rather than the
class specified.
-
To make debugging classpath problems easier, the Wrapper now verifies all
classpath entries before launching a JVM and logs debug level warnings for
any entries that do not exist.
-
Fix a problem where it was possible to define a zero length filter that would
trigger on any output.
-
Add some additional debug output to make it easier to debug startup,
shutdown and restart problems.
-
Modify the way the Wrapper forcibly kills a frozen JVM on UNIX platforms so
that it now sends a SIGTERM, waits up to 5 seconds, then sends a SIGKILL.
-
Add a new wrapper.java.library.path.append_system_path
which will cause the Wrapper to append the system path to the generated
library path.
Feature Request #917902.
-
Fix a problem where spaces around the '=' character of a property definition
were rendering the property invisible to the Wrapper.
Bug #916001.
-
Fix a problem where the first ping timeout after the JVM was started was
still hard coded at 30 seconds. This was causing a combination of large
values of wrapper.ping.interval
and wrapper.ping.timeout to fail.
-
Fix a problem where the JVM would fail to shutdown cleanly if the Wrapper
was asked to stop too soon after launching a JVM. This was leading to the
JVM being killed after the shutdown timeout expired.
Bug #917281.
-
Added an adviser which will print out explanatory messages to the console
and wrapper log file when the Wrapper encounters a commonly made
configuration mistake. This is designed to cut down on support requests
by new users. Can be disabled using the
wrapper.adviser property.
-
The bash script and the realpath utility have been deprecated since version
3.0.3. They have been removed in this release. The sh script is recommended
on all UNIX platforms, and the realpath utility which was used by pre-3.0.3
bash and sh scripts has not been used since.
-
Add the wrapper.startup.delay
property along with console and service specific variants which make it
possible to configure a delay between the Wrapper being launched and the
first JVM being launched.
-
Promote the wrapper.debug property back
from being "deprecated". It has continued to be useful and deserved
documentation and official status.
-
Add wrapper.on_exit.<n>
properties to control what happens when a exits based on the exit code.
-
Modify the way calls to System.in.read() are handled so that they now block
rather than throwing an exception. Currently, System.in can not be used with
the Wrapper because of the way I/O is passed between the Wrapper and JVM.
-
Modified the Windows batch files to fix a problem where the path to the
Wrapper.exe contained more than one "/bin". The new batch files are much
simpler and should be easier to customize if needed. Bug #925308.
Bug #925308.
-
Modified the wrapper.java.initmemory
and wrapper.java.maxmemory properties
so that they now default to a value of 0 which causes the
-Xms and -Xmx
parameters to be omitted from the command used to launch Java. This
will cause the JVM to use its own default values and also makes it possible
to specify the memory parameters using the
wrapper.java.additional.<n>
properties.
-
Added a pair of environment variables,
WRAPPER_FILE_SEPARATOR and WRAPPER_PATH_SEPARATOR, whose values are set to
either '/' and ':' or '\' and ';' on startup. They can be used in the
wrapper.conf file to construct platform independent property values.
-
Add a new wrapper.working.dir
property which makes if possible to change the Wrapper and JVM's working
directory to a location other than the location of the Wrapper binary.
Feature Request #738160.