 |
Hosted by:
|
|
|
 |
 |  |
 |  |
 |
 |
Java Service Wrapper Release Notes |
Java Service Wrapper Release Notes
 |
-
Purchased a 64-bit system to make it possible for me to develop 64-bit
versions of the Wrapper. This purchase was made for the sole purpose of
supporting Wrapper development. If you find any of the 64-bit versions
useful please consider helping to offset costs with a
donation.
-
Add a new wrapper.ping.interval.logged
property which makes it possible to reduce the debug output caused by ping
transactions between the Wrapper and JVM.
-
Fix a problem on Windows where the Windows Service Manager was not waiting
the full configured time of the wrapper.jvm_exit.timeout and
wrapper.shutdown.timeout properties.
This was leading to the net stop command timing out and the system shutting down
without the java application having fully stopped.
Bug #1582568.
-
If internal firewalls were preventing the backend socket from being created,
it was not being made clear what the cause was. It was also possible that
the JVM would deadlock on shutdown. This second problem was recovered from
when the Wrapper killed the JVM.
-
Rework the console output from all Wrapper classes to make it much more
obvious that that is their source.
-
Submit a patch to the UNIX sh script by Chris Dance which makes it possible
to tell the shell to wait a few seconds for the wrapper to start up. Also
includes some modifications to work correctly on older Debian and RedHat
systems.
-
Fix a problem where the local copy of ant was not always being used
correctly on UNIX systems which have a default copy of any installed.
Thanks to Robey Pointer for the patch.
-
Add the -lm to the command line when building Linux 32 and 64 bit versions
of the wrapper on Linux. This is to support building on recent Debian
and Ubuntu versions. Thanks to Robey Pointer for the patch.
-
Add support for the SIGUSR1 and SIGUSR2 signals so they can now trigger a
shutdown, restart or be forwarded to the JVM for custom functionality.
See the wrapper.signal.mode.usr1
and wrapper.signal.mode.usr2
properties. Based on a patch by Robey Pointer. Note that the JVM process does
not trap SIGUSR1 or SIGUSR2 signals as they are used internally by the JVM
as part of the garbage collection process.
-
Fix a problem where the WRAPPER_OS, WRAPPER_ARCH, and WRAPPER_BITS
environment variables were not being initialized correctly for the various
unix platforms.
-
Removed the 4096Mb upper limit set on the
wrapper.java.initmemory and
wrapper.java.maxmemory properties.
64bit users need to go way beyond that.
-
Fix a problem where relative include file references in the configuration
file were not working correctly if the
wrapper.working.dir was used to
change the working directory. The working directory is now always reset
to its original value as the configuration file is being loaded.
-
Added a new wrapper.registry.java_home
property which makes it possible to specify the location of java within
the registry.
-
Set a new WRAPPER_JAVA_HOME environment variable if the JAVA_HOME is
located in the Windows registry.
-
Modify the way properties are looked up so that any unreplaced environment
variable references will be reevaluated in case they were set after the
property was originally set. This is possible with some WRAPPER_*
environment variables or depending on the placement of set.* properties
in the configuration file.
-
Set any unset properties to their default values internally. This is
necessary so the WrapperManager.getProperties() method returns the
correct set of active properties.
-
Fix an occasional crash with 64-bit UNIX caused by a native synchronization
problem when system signals are trapped.
Bug #1614010.
-
Fix a problem on Solaris versions, where the Wrapper was not correctly
recovering and attempting another back end port when the first was already
in use.
Bug #1594073.
-
Fix a problem on Solaris and AIX where the RUN_AS_USER feature of the
shell script was not working due to lack of support for the "-m" option of
su. The shell script now uses "su -".
Bug #1590168.
-
Add HP-UX Makefiles for building with make. Fix some problems in the
shell script to make the script work better on HP-UX. Thanks to David
Brown and Nicolas Varney for the patches.
-
Fix a problem where any signals received by the JVM and triggering a
SIGCHLD signal in the Wrapper were being interpretted as the JVM having
stopped. This was not always true.
Bug #1643666.
-
The Wrapper is now able to detect when the JVM process is stopped and
continued. It will still timeout if stopped, but a descriptive warning
is now logged.
-
Increase the maximum number of log entries which can be queued to avoid
losing them. These are only used for log entries outside of the primary
thread.
-
Fix a problem in the shell script which was making it impossible to stop
the Wrapper or query its status on OSX.
-
Add support for 64 bit AIX. Thanks to Nicolas Varney for supplying a
Makefile.
-
Correct the AIX library extension to be ".a".
-
Rename the UNIX Makefiles so it is more obvious which tool must be used
to build with them.
-
Fix a problem where the HP-UX native library would not be located
correctly for some processor types if the file had a platform specific
name.
-
Internally rename the WRAPPER_JSTATE_LAUNCH state to
WRAPPER_JSTATE_LAUNCH_DELAY for clarity.
-
Fix a problem where the UNIX versions of the Wrapper would shutdown
rather than restarting a frozen JVM if the arrival of the SIGCHLD signal
from the old JVM process was delayed by more than a second or two.
-
Rework the Windows build so it now uses nmake and a Makefile rather than
vcbuild. This is probably not as clean, but it was needed to get the
64-bit build working.
-
Fix a problem on Windows versions where quoted values specified from the
command line were not always being requoted correctly when generating the
java command line.
-
Add validation checks for Windows versions to make sure that all additional
parameters, application arguments, the classpath, and library path all
contain values which are quoted correctly. Incorrectly quoted values will
now result in a warning message that will help resolve the problem.
-
Fix a memory leak when calling WrapperManager.listServices() on Windows.
Bug #1665947.
|
 |
-
Add support for x86 Mac OS X distributions.
-
The 3.2.2 Windows version was accidentally released with its MFC libraries
dynamically linked. This meant that anyone who did not have VS8 installed
were not able to run the Wrapper due to missing DLLs. This version fixes
that snafu by correctly using statically linked libraries as was done in
previous versions built with VS6.
Bug #1578554.
|
 |
-
Correct a typo in the usage output of the WrapperStartStopApp. Thanks to
Michael Giroux for pointing it out.
-
Fix a problem on OSF1 systems where the backend socket was not listening
correctly due to a backlog of 0. This was broken in 3.2.0. Thanks to
Phillip Gussow for supplying a patch.
-
Remove the com.silveregg.wrapper package classes that were deprecated in
version 3.0.0.
-
Fix a potential problem in the UNIX script where the lock file permissions
were not being set correctly if the LOCKFILE and RUN_AS_USER variables are
specified but the group of the specified user could not be resolved.
-
Fix a problem where the exit code returned by WrapperListener.stop was being
ignored in some cases.
-
Fix a problem where the shell script would not work correctly when the
wrapper or its configuration files were located in a directory path
containing spaces.
-
Apply a series of patches by Michael Saya to get the Windows 64 bit build
working.
-
Fix a problem in UNIX versions where the TERM signal handler was being
disabled when a CHLD signal was received.
-
Added support in UNIX versions for the HUP signal.
-
Added a new
wrapper.signal.mode.hup
property to let the user control what
happens when the Wrapper process receives an HUP signal
-
Migrated the source to Subversion from CVS. Did a bunch of cleanup in the
source, removing CVS specific tags.
-
Fix a problem in UNIX versions were the pid file specified by the
wrapper.java.pidfile
property contained the wrapper pid rather than the
jvm pid.
Bug #1565011.
-
Fix a problem in UNIX versions where the file specified by the
wrapper.java.pidfile
property was not always being deleted when the JVM
process went away.
-
A user encountered a JVM bug where calls to System.exit were resulting in
an IllegalThreadStateException being thrown. Added some code to trap this
and shut down the JVM using other means to avoid a hang during shutdown.
-
Fix a NullPointerException caused by users incorrectly implementing
an Integration Method #3 class and then calling WrapperManager.start with
a null value for the args parameter.
-
Update the banner displayed by the Wrapper on startup to include a
copyright notice. Please see the
license page of the documentation
for details.
-
Add a new 'Z' log format which will log the time to millisecond accuracy.
-
Fix a problem where the JVM exit code was not being set correctly when
the JVM was shutdown using WrapperManager.stopImmediate(). The exit code
of the Wrapper was being set correctly through other means however.
-
Fix a potential synchronization problem in the logging code if a JVM exits
with debug output enabled.
-
Updated the WrapperListener.stop method javadocs to better explain the
exitCode value under certain exit modes.
-
On UNIX versions, add a log message which records the signal that caused
the JVM process to exit when it terminates unexpectedly.
-
Fix a problem where the
wrapper.on_exit.<n>
property was not working correctly in some cases on UNIX. With help
from Andreas Schafer.
-
Add support for building the Wrapper with Visual Studio 8 for Windows.
Releases will now be done using this compiler.
-
Fix a CRITICAL bug in the 3.2.0 and 3.2.1 Windows versions of the Wrapper
where the Wrapper would crash under rare circumstances when running as a
service. If the service manager interrogated the service at the same
instant as the wrapper was pinging the JVM, the wrapper was sometimes
crashing due to a synchronization problem. The problem did not exist
prior to 3.2.0.
Bug #1574537.
-
Fix a minor logging problem where the 'D' format was not displaying the
correct thread name for queued log messages.
|
 |
-
Fix a problem with the solaris-sparc-64 makefile.
-
Add a solaris-x86-64 makefile.
-
Merge in a patch by Hugo Weber to make it possible to configure the Wrapper
to pull the JRE from the system registry on windows.
-
Fix a batch file bug added in 3.2.0 where the scripts would not function
correctly if the full path to the batch file contained spaces.
Bug #1450601.
-
Modify the message shown when a native library fails to load so the
exception message text is now shown in the log without having to enable
debug log output.
-
Modify the UNIX shell script to be more informative if the script is unable
to locate a wrapper binary due to a executable bit permission problem.
-
Fix a minor permission problem with the build for the delta-pack.
-
Commit a patch by Juergen Hermann to make the error shown when realpath
fails clearer.
-
Add the ability to use a default wrapper.conf file that is in the same
directory as the wrapper binary. The file will be named based on the
name of the wrapper binary.
-
Synchronize the command line so that both the Windows and UNIX versions
are now the same. The old command line syntaxes are now supported
everywhere so there will be no compatibility problems.
-
It is no longer possible to specify arguments using the '/c' syntax.
This was undocumented so hopefully it is not being used. The documented
'-c' syntax must now be used. The change was necessary to synchronize
the command line between UNIX and windows platforms.
-
The 32-bit HP-UX 3.2.0 build was generating a libwrapper.so file rather
than libwrapper.sl.
-
Make the WrapperManager.setConsoleTitle, getWrapperPID, and getJavaPID
methods available through JMX.
-
Fix a state engine problem introduced in 3.2.0 which was causing the
wrapper.on_exit.<n>
properties to be ignored in most cases.
-
Fix a potential problem that could have caused crashes when debug logging
was enabled.
-
Fix a problem where signals were not being handled correctly on some UNIX
platforms, including AIX. This was making it impossible to shutdown the
wrapper cleanly with the TERM signal.
Bug #1477619.
-
Add new default environment variables
which can be referenced in a configuration file to configure platform
specific directories and file names. WRAPPER_OS, WRAPPER_ARCH, and
WRAPPER_BITS.
-
Add a -v argument to make it possible to request the version from a wrapper
binary.
-
Add support for registering the WrapperManager MBean with the
PlatformMBeanServer when run on a 1.5+ JVM. See the
JMX section in the documentation for details.
-
Rework the way timeout properties are handled. Values of 0 now actually
disable the timeouts rather than setting them to a large value. To avoid
overflow problems when converting to internal timer ticks, timeouts are now
restricted to a maximum of 20 days, or 1728000 seconds. Change affects the
wrapper.cpu.timeout,
wrapper.startup.timeout,
wrapper.ping.timeout,
wrapper.shutdown.timeout,
and wrapper.jvm_exit.timeout
properties. For values less than 20 days, there should be no change in
functionality.
-
Add support for debuggers. The Wrapper will now show a warning on startup
and then again the first time a timeout occurs. But all timeouts will be
ignored. This is to avoid problems with the Wrapper restarting a suspended
JVM in the middle of a debugging session. The wrapper enters this mode if
the wrapper.java.command ends
with the string "jdb" or "jdb.exe", or the "-Xdebug" parameter is passed to
the JVM.
-
Add 'athlon' to the list of supported architectures.
-
Fix a problem where the environment variables loaded when a service was
started were always the system environment even if the service was running
as a specific account. The environment of a specific account will now be
loaded on top of the system environment if the USERNAME environment
variable is set by the system.
Bug #1491138.
-
Added new wrapper.ntservice.pausable
wrapper.ntservice.pausable.stop_jvm
properties to make it possible to pause and resume the Wrapper when installed
as a Windows service.
-
Added new Pause and Resume batch files as well as modified the command batch
file to support pause and resume.
-
Added PAUSE and RESUME commands for use by the
wrapper.commandfile property.
-
Fix a problem with the wrapper.pidfile,
wrapper.java.pidfile,
wrapper.anchorfile,
wrapper.commandfile,
wrapper.statusfile,
wrapper.java.statusfile,
wrapper.java.idfile,
and wrapper.lockfile.umask
properties where forward slashes in paths were not being changed to back
slashes on Windows versions.
-
Simplify the code used to load a native library by using the
System.mapLibraryName method rather than doing the same thing manually.
-
Add a new wrapper.syslog.facility
property which makes it possible to specify the syslog facility on UNIX systems.
Thanks for the patch from Bruce Pennypacker.
-
Removed the custom thread counting used to keep track of when the wrapped
Java application has completed. It is now done in a different way that
will work on all Java implementations without requiring any special
consideration of the current JVM. Deprecated the
wrapper.monitor_thread_count
and wrapper.thread_count_delay
properties.
Bug #1470265.
-
The WrapperStartStopApp helper class still
requires thread counting if the stopWait parameter is set to true. Previous
versions all hard coded the system thread count to 1 which worked for most
JVMs. A new system property,
org.tanukisoftware.wrapper.WrapperStartStopApp.systemThreadCount, was added
to make it possible to customize. It currently defaults to 1.
-
Make it possible to extend the WrapperSimpleApp and WrapperStartStopApp
helper classes.
Feature Request #1510274.
-
Add warning messages if the old org.silveregg.wrapper package classes are
still being used. They will be removed in the next release.
|
 |
-
Rework the release cycle so that the wrapper.jar file released for all
platforms is now built on the same machine. This resolves a few
incompatibility problems caused by jars built on very new JVMs but run
on old JVMs.
-
Add additional output when the JVM can not be launched due to security
restrictions on Windows.
-
Greatly improved the performance of file logging. On a windows test machine
3.1.2 could log 67210 lines of output in 20 seconds with a 80-15% split
between the Wrapper and JVM process CPU usage. It now outputs 215214 lines
with a 64-34% split, also showing less load on the system process. This is
a 220% increase in performance. In both cases, the JVM was completely idle
other than the console output which makes the Wrapper appear to be a bit of
a CPU hog. In fact it is the only process doing any work in this case.
This improvement was accomplished by keeping the log file open unless idle.
The idle time can be controlled using the new
wrapper.logfile.inactivity.timeout
property. The speed increase on UNIX platforms was much smaller at around 10%.
-
Add a new property, wrapper.disable_restarts,
which will completely disable the Wrapper's ability to restart JVMs.
-
Add a pair of new properties, wrapper.port.min
and wrapper.port.max, which make it
possible to define the port range used when a specific
wrapper.port is not specified.
-
Fix a problem where certain characters like umlauts were being stripped from
property values.
Bug #1049528.
-
Make the PIDs of the Wrapper and Java process easier to access by providing
a new pair os system properties; wrapper.pid and wrapper.java.pid, as well
as a new pair of methods;
WrapperManager.getWrapperPID() and
WrapperManager.getJavaPID().
-
Add a new WrapperEventListener class which
can be implemented to receive a wide variety of events from the Wrapper.
-
Add a WrapperServiceControlEvent class which
will report any service control codes received by the Wrapper as it is running
as an NT service. This was added to make it possible for other applications
to sent custom codes to the Wrapper using the Window Service Manager.
-
Add a WrapperManager.listServices() method
which can be used to obtain thestatus of all services on a Windows system.
-
Add a WrapperManager.sendServiceControlCode()
method which makes it possible to start, stop, pause, continue, any service on
Windows systems. It is alsopossible to send custom user codes via the service
manager.
-
Add comments in the sh script to support the chkconfig command.
-
Implement the ability to read from standard input via System.in.
Feature Request #1024693.
-
Made the tick based timer the default by changing the default value of the
wrapper.use_system_time
property to false. Most users should see an
improvement in reliability under heavy loads with this new setting. If you
have extended any timeouts in the past, you may wish to try going back to
defaults as they may no longer need to be extended.
-
Add a new wrapper.restart.reload_configuration
property which causes the Wrapper to reload its configuration file immediately
before a JVM restart. Properties which can not be reloaded have comments
stating that fact in their documentation.
Feature Request #981060.
-
Fix a problem in the UNIX shell script which was preventing the script from
locating the PID and anchor files when the
wrapper.working.dir property was
used.
-
Modify UNIX versions so that the wrapper binary will now force its working
directory to the location of the wrapper binary. This change was made to
make the UNIX version work the same way as the Windows version and thus make
configuration files that modify their working directory work correctly on
a cross platform basis. Users which have been using the scripts supplied
with the Wrapper should not encounter any problems. Other users may require
slight changes to their configuration file to deal with the new way that the
Wrapper deals with its initial working directory.
-
Add a new method WrapperManager.getProperties()
which makes it possible to access any property in the Wrapper configuration
file.
-
Fix a problem where TERM signals were not being correctly ignored by the
JVM process on UNIX platforms even if the
wrapper.ignore_signals property
was set to true. Earlier versions of the Wrapper would generate a
WRAPPER_CTRL_SHUTDOWN_EVENT when a TERM signal was received. On Windows
that signal should never be ignored. To resolve this a new
WRAPPER_CTRL_TERM_EVENT was added making it possible to selectively ignore
the TERM signals. This change may affect user implementations of the
WrapperListener.controlEvent() method.
Bug #1086344.
-
The Windows version has a feature which allows the user to immediately kill
the Wrapper and its Java application without waiting for a clean shutdown
by pressing CTRL-C twice. Windows sends the CTRL-C signal to both the
Wrapper and Java processes. Due to a rare timing problem, it was possible
for the Java process to get the signal first and initialize a shutdown
before the Wrapper could respond to the signal. In this case the Wrapper
was interpreting this as a second CTRL-C signal even though the user only
pressed it once.
-
If the wrapper.anchorfile or wrapper.pidfile properties are used on Windows
they were being unintentionally deleted if the -t, -p, -i, or -r commands
were used while another Wrapper instance was running. In the case of the
anchor file, this would result in the Wrapper being shutdown unintentionally.
This was not an issue on non-Windows versions.
Bug #1108517.
-
Fix a security problem where the value of the
wrapper.ntservice.account
and wrapper.ntservice.password
properties were being stored in plain text within the registry if they were
specified on the command line when installing the Wrapper as a Windows service.
Bug #1110183.
-
Add a pair of properties wrapper.ntservice.password.prompt and
wrapper.ntservice.password.prompt.mask
which which will cause the Wrapper to prompt the user for an account
password when it is being installed as an NT service.
-
Added system properties to make it possible to configure whether or not
the WrapperSimpleApp and
WrapperStartStopApp helper classes will wait
for the configured main methods to complete before reporting that the
application has started. See the javadocs
for these classes for more details.
-
Modify the HP-UX build so that it now dynamically links with the pthread
library. This was to make the binaries work with HP-UX 11.00. Thanks to
Sun Kun Choi for the patch.
-
Add new wrapper.statusfile and
wrapper.java.statusfile
properties which can be used by external applications to monitor the
internal state of the Wrapper or JVM at any given time. These will not
be useful to most users.
-
Add a new wrapper.commandfile
property which can be used by external applications to control the
Wrapper and its JVM.
-
Add a new wrapper.java.idfile
property which can be used by external applications to monitor the
internal state of the JVM at any given time.
-
Add a warning on startup if the JVM has a SecurityManager set but the
wrapper.jar has not been granted the AllPermissions permission. Failure
to do so will almost certainly lead to the Wrapper throwing a number of
errors and this helps to point out the cause.
-
Add a security model which protects most Wrapper method calls when a
SecurityManager has been registered. See the
Security Model section
for more details.
-
Add a new pair of batch files which can be used to start and stop the
Wrapper when installed as a service.
-
Add new -q and -qs commands to the Windows version of the Wrapper which
make it possible to query the currently installed status of the service.
See the Query Service Status
section for more details.
-
Fix a problem where the
wrapper.java.library.path.append_system_path
property was not working correctly on Windows when the system PATH
contained quotes.
Bug #1238726.
-
Modify the usage output of the Wrapper on all platforms so the Wrapper's
version is now included. It was not previously possible to get the version
of the Wrapper being used without launching a JVM.
-
Add a pair of new methods WrapperManager.stopAndReturn()
and WrapperManager.restartAndReturn() which
make it possible for code to stop or restart the JVM and then continue until
the JVM is shutdown. This can be useful for shutdowns initiated within
places like servlets, whose operation is expected to complete.
-
Fix a problem on UNIX where the child JVM was sometimes leaving around
zombie processes after a restart. The SIGCHLD signal was not being handled
correctly. Thanks to Traun Leyden for the patch.
Bug #1291201.
-
Implement the ability to catch control events using the WrapperEventLisener.
Feature Request #836975.
-
Add new wrapper.jvm.port,
wrapper.jvm.port.min, and
wrapper.jvm.port.max
properties which make it possible to control the port the JVM uses to open
a connection back to the JVM. The Wrapper uses to leave this up to the
OS, but some users were having problems with the default conflicting with
other ports.
-
Switch from using ftime() to gettimeofday() on UNIX platforms to work around
a problem where the Wrapper would not run on new versions of OSX because
they deprecated the ftime() function call. Thanks for the patch by
Michael Macaluso.
Bug #1313162.
-
Remove the shutdown timeout from the UNIX shell script. It is not needed
and can cause a zombie JVM if the wrapper's internal shutdown timeout was
longer than that of the shell script.
-
Add the ability to specify integer property values in base 8 or 16 in
addition to base 10. Base 8 values start with a '0' and base 16 values
start with a '0x'.
-
Make it possible to set the umask on all files created by the Wrapper
as well as the default umask of files created by the JVM. Added new
wrapper.umask,
wrapper.java.umask,
wrapper.pidfile.umask,
wrapper.lockfile.umask,
wrapper.java.pidfile.umask,
wrapper.java.idfile.umask,
wrapper.statusfile.umask,
wrapper.java.statusfile.umask,
wrapper.anchorfile.umask,
and wrapper.logfile.umask
properties.
-
Improve the message when the native library can not be loaded to make mention
of the possibility of a 32/64 bit mismatch.
-
Add a new wrapper.monitor_thread_count
property which makes it possible to disable the Wrapper's counting of
non-daemon threads and thus the shutting down of the JVM when they have all
completed.
-
Add support for BELOW_NORMAL and ABOVE_NORMAL options to the
wrapper.ntservice.process_priority property.
Feature Request #1373922.
-
Ignore '#' characters which are included within double quotes in the value
of a property in the configuration file. Unquoted values must be escaped
with a second '#' characters or it will be interpreted as a comment.
-
Display the Wrapper banner in the JVM earlier so that it is displayed
even where there are startup errors.
-
Modify the WrapperSimpleApp and WrapperStartStopApp classes so that the
WrapperManager is always initialized immediately. This makes the output
clearer in the event of startup errors.
-
Fix a problem where the Windows ServiceManager was not correctly reporting
a startup error if a service failed on startup. The service was being
reported as having started even though it failed to start.
-
Fix a problem on UNIX versions where the Wrapper would go into a recursive
state of attempting to launch the JVM from failed child processes if there
was any problems executing the configured java process.
-
Rework the way the RUN_AS_USER setting in the UNIX shell script works so
the specified user is now set regardless of the command being executed.
To make sure the user never has to enter the password twice when running
the script, it now recurses after changing the user. The script then
runs entirely as the configured user.
-
Improve the message that is displayed when attempting to start, stop, or
remove a windows service which is not installed.
-
Add new wrapper.lockfile property
which makes it possible to specify a lock file containing a pid.
-
Modified the sh script so it now creates a lock file on startup in the
/var/lock/subsys directory if it exists. This is needed by fedora systems
on shutdown.
-
Store javadocs in tar distibutions in a nested tar file to avoid problems
with long filenames in some tar distributions.
-
Fix a problem with the WrapperSimpleApp and WrapperStartStopApp helper
classes where on heavily loaded systems it was possible for the Wrapper
to get a running thread count of 0 and shutdown before the main thread
had a chance to be started.
-
Add a new wrapper.thread_count_delay
property which will force the WrapperManager to wait the specified number
of seconds before it begins to check the number of running threads.
-
Fix a problem where the wrapper.java.library.path.append_system_path
property was appending the PATH rather than the LD_LIBRARY_PATH environment
variable on Unix systems. PATH is correct for Windows systems.
-
Add a new wrapper.logfile.rollmode property which makes it possible to
control how and when the logfile is rolled. Feature Requests
#864463,
#1085097,
and #1085850.
-
Fix a problem on Linux where the test for the status of the Java child
process would sometimes fail causing the Wrapper to shutdown with the
error "Critical error: wait for JVM process failed (No child processes)"
rather than restart the child JVM. Users who encountered this problem
found it easy to reproduce, but it only happened on some systems.
-
Modify the way the UNIX shell script tests for the existence of a process
matching the pid in an existing pid file. It now verifies the process
command as well as the pid to fix a system reboot problem where a stale
pid has been reused by another application, making the script think the
wrapper was already running.
-
Add support for the GNU libgcj JVM.
Like JRocket, it requires slightly different thread counting.
-
Add support for Linux 64-bit PPC and Solaris 32-bit x86 versions.
-
Add a new set.default.ENV syntax to the configuration file making it
possible to environment variable values which do not overwrite existing
values, ie. to specify a default value.
-
Added a new wrapper.console.flush
property which forces the wrapper to explicitly flush stdout after
each line of log output.
-
Change the error shown when the JVM shuts down prematurely during a
shutdown to a warning message.
-
Fix a problem where the Wrapper would show the following error message
if user code called System.exit from within the WrapperListener.stop
callback method. This would happen if the stop class's main method
registered with the WrapperStartStopApp called System.exit.
"JVM exited unexpectedly while stopping the application."
Bug #945976.
-
Add a new wrapper.syslog.ident
property which makes it possible to specify the identity used in syslog
entries on UNIX. This was possible in older versions but was set using the
wrapper.ntservice.name property.
Bug #1432855.
-
Add support for MacOSX Universal Binary distributions.
-
Add support for Delta Pack distributions. This is a distribution that
contains
|
 |
-
Modify the way boolean system properties are resolved by the WrapperManager
so it is now possible to set them to true or false rather than assuming they
are true if set.
-
Fix a problem where some localized error messages were not having their
tokens replaced correctly.
-
Fix a problem when using the WrapperStartStopApp helper class. The usage
text was incorrectly being displayed in the console if an exception was
thrown while executing the main method of the configured stop class. This
did not change the functionality of the application, but it did cause some
confusion.
-
Fix a problem on Windows where a library path or class path which ended in
a backslash was preventing the Wrapper from launching the JVM. The Windows
OS was using the backslash to escape the quote used to close the path. The
fix was to add a second backslash where needed.
-
Added a new wrapper.java.command.loglevel
property which makes it possible to control the log level of the generated
java command.
-
Add support for escaped quotes when stripping quotes on UNIX for the
wrapper.java.additional.<n> and
wrapper.app.parameter.<n>
properties.
-
Change the default value of wrapper.jvm_exit.timeout
from 5 to 15 seconds. The old default was too fast for some applications
which take a while to exit. Applications which were exiting promptly will
not see any difference.
-
Fix a problem where the JVM would restart at certain times when using the
system time based timer due to an overflow error. This problem was
introduced in 3.1.0. Due to a separate bug in 3.1.0, the Wrapper would
shutdown rather than simply restarting the JVM as was happening in 3.1.1.
The last restart happened on Aug 21, 2004. It will next occur Oct 10, 2004
and repeat at regular intervals. There are no problems when using the new
Tick based timer.
Bug #1014405.
-
Correct the wrapper.logfile.maxsize
property so that a a kilobyte is now 1024 rather than 1000, and a megabyte
is a megabyte. We aren't a hard drive manufacturer after all.
-
Add try-catch blocks around all thread entry points in the Windows version.
This has always been done in the main function, but these blocks will help
to narrow down the cause of problems should they ever be encountered in
control or service handlers.
-
Centralize shutdown code on UNIX version in an appExit method as was already
being done for Windows versions.
-
Fix a problem where the build.sh was not correctly using the included ant
if an ANT_HOME environment variable was defined.
-
Add a new wrapper.single_invocation
property which will prevent multiple invocations of an application from being
started on Windows platforms. The shell script handles this on UNIX platforms.
Feature Request #889123.
-
Fix a crash problem introduced in 3.1.1, caused by a pair of uninitialized
pointers. The crash was possible on all platforms but would only happen
if the Wrapper was started without any arguments. It would not affect
users running the Wrapper normally.
Bug #1018481.
-
Fix a problem with the run as user feature of the shell script on Solaris.
Needed to be using /usr/xpg4/bin/id rather than /usr/bin/in if available.
Bug #1024008.
-
Replace calls to usleep with nanosleep on platforms where it is available.
This was to fix an occasional hang on a specific Solaris machine. It would
occasionally hang on calls to usleep. From research, it appears that usleep
has problems when signals are encountered while sleeping. Still testing
whether or not this change solved the problem.
-
Upgrade the version of Ant
included with source releases to 1.6.2 to fix some problems generating
jni headers when building with Java 1.4.2.
-
Upgrade the version of Cocoon
included with source releases to 2.0.4 to fix some problems generating
documentation using Java 1.4.2.
-
Display a warning if the exit status of a JVM process ever returns the
STILL_ACTIVE status on Windows. There was no known problem here, just
noticed it while looking over the code.
-
Display a descriptive error message on Windows if the the JVM process crashes
due to an uncaught exception in native JVM code.
-
Add a test for invalid jvm arguments set using the
wrapper.java.additional.<n>
properties. Invalid arguments could cause the Wrapper startup to fail in
non obvious ways if they are mistaken by the JVM as the main class.
|
 |
-
Modified the way libwrapper.so is built on Solaris and Linux so that it
no longer statically links its required libraries.
-
Fix a file handle leak when calling WrapperManager.getUser or
WrapperManager.getInteractiveUser on Windows platforms.
-
Fix a problem introduced in 3.1.0 where the JVM would not be restarted
correctly if it quit after a ping timeout to let the Wrapper resynch and
restart it.
-
Fix a problem where CTRL-C was not being handled correctly if the console
was configured to be shown when running as an NT service.
-
Fix a problem where signals fired at UNIX versions of the wrapper were
not being handled correctly when the tick timer was being used.
-
Fix a synchronization problem in the logging code which would
occassionally cause the Wrapper to crash with an Access Violation.
The problem was only encountered when the tick timer was enabled,
and was only seen on multi-CPU systems.
Bug #949877.
-
Fix a problem when using the tick timer where the Wrapper would sometimes
exit on startup due to an uncaught SIGALRM. Only reported on multi-CPU
Solaris systems.
-
Fix a problem where the Wrapper would sometimes hang on shutdown if
another thread called System.exit while the Wrapper was shutting down.
Bug #955248.
-
Fix a problem introduced in 3.1.0 where a very very large CPU timeout
warning message was being displayed if the system time was set back
while using the default system timer.
-
Added a new property, wrapper.anchorfile,
which makes it possible to cause the Wrapper to shutdown by deleting
an anchor file. The UNIX sh script has been modified to optionally make
use of this feature.
-
Add a debug message at startup which makes it clear which timer is being
used.
-
A Windows user reported that using forward slashes in the path the log
file was failing. Avoid this problem by always converting '/' to '\'
in the wrapper.logfile property
on Windows.
-
Fix a problem where it was not possible disable the wrapper log file as
documented in the wrapper.logfile
property. Most likely broken way back in version 2.2.5.
-
Add some additional error checks after calls to control the pipe between
the JVM and Wrapper as well as improving the messages around other socket
related error messages.
-
Fix a problem on some HP-UX systems were not working correctly because
the EAGAIN and EWOULDBLOCK constants are not equal with some compilers.
-
Change some of the defaults in the src/conf/wrapper.conf.in file which
ships with the Wrapper to avoid confusion with new users.
-
Rewrote the routine which reads and logs console output from the JVM
for Windows versions. Internal buffers are now scaled dynamically,
fixing a problem where long lines were being wrapped at 1024 characters.
This rewrite also resulted in a 4 fold increase in speed when the JVM is
sending large quantities of output to the console.
-
Increase debug output on UNIX platforms when a signal is caught. When
possible, information about where the signal came from is now logged.
-
Modified the way log output from within signal handlers is handled so it
is now queued and then logged by the main event loop.
-
Back out a 3.1.0 change where a JVM that had failed to exit cleanly was
sent a SIGTERM prior to a SIGKILL. The SIGTERM made no difference and
slowed down the forced shutdown. A modification to the event loop made
the functionality more difficult to implement.
-
Add the ability to set the user that the Wrapper and its JVM will run as
from within the sh script on UNIX platforms.
-
Add an icon resource to the Wrapper binary on Windows versions.
-
Fix a typo in the UNIX sh script which caused an extra slash to be included
in the path of the pid file. Was not causing any known problems.
-
Added support for 64-bit HP-UX. Big thanks to Venkatesh Sellappa for
supplying the patch.
-
Fix a deadlock problem introduced in 3.1.0 with some FreeBSD systems. Not
all users were experiencing it, but those who did were able to reliably
reproduce the problem. The problem appears to have been caused by
FreeBSD bug #kern/64313.
-
Make the signal handling variables in the wrapper native library volatile.
Directly this was to fix a compiler warning on HP-UX64 systems but it
should also make the calls more efficient.
|
 |
-
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.
|
 |
-
Added support for SGI Irix. Big thanks to Andreas Wendt for supplying the
patch.
-
Due to a bug in the build, the native library was not included in the 3.0.3
or 3.0.4 binary releases for OSX, building from source was working correctly.
This has been fixed and the build greatly simplified to avoid such problems
in the future.
Bug #791755.
-
Changed the default location of the pid file generated by the sh script to
exist in the same directory as the sh script rather than in the /var/run.
This can be changed by setting the PIDDIR variable in the sh script used to
launch the Wrapper.
-
Added support for the wrapper.pidfile
property on the Windows platform.
WARNING
|  |
(WINDOWS USERS) If you are using a wrapper.conf file that was created prior
to version 3.0.0 of the Wrapper, then you may have this property defined in
your configuration file. You will get an error on startup if the specified
path does not exist.
|
-
Added the wrapper.java.pidfile
property which will cause the pid of the java process to be written to a
specified file.
-
Stop clearing the file creation mask when the Unix version of the Wrapper is
run as a daemon process. The file creation mask will not be inherited from
the process which launches the Wrapper.
Bug #788849.
-
Modify the sh script so it works on Linux, then deprecate the bash script.
This means that all Unix platforms can now use the same script to control
the Wrapper. Thanks to Mike Castle for the patch. The bash script can still
be found in the release, but it is deprecated and will be removed in a
future version.
-
Modified the sh script so it is now possible to set the nice priority in the
script configuration block.
-
Remove output to System.out in the WrapperManager.requestThreadDump() method.
If some JVM threads were hung while accessing the System.out object,
attempting to do a thread a dump would cause the calling thread to hang as
well. Thanks to Thomas Hart for the patch.
-
Make it obvious in the log whether or not the Wrapper was started as a
daemon process on UNIX systems.
-
Modify the way restarts requested from the JVM, or caused by a filter are
handled. The Wrapper will no longer reset the restart count in either of
these cases. If an application runs for longer than the
wrapper.successful_invocation_time
timeout then the count will still be reset back to 0.
-
Added a new wrapper.ignore_signals
property which makes it possible to configure the Wrapper so it will ignore
CTRL-C, HALT and INT signals.
-
Modify the WrapperManager.isLaunchedAsService() method on UNIX systems so it
now returns true if the Wrapper was launched with the
wrapper.daemonize flag set.
-
Added a pair of MBean interfaces which allow the Wrapper to be controlled
using JMX. See the new JMX section in the
documentation for details. Thanks to Sal Ingrilli for help with testing.
-
Modify the Windows build so the Wrapper.exe and Wrapper.dll files can now
be built from Ant if MSVC is
installed.
-
Added a new wrapper.ping.interval
property which lets users control the frequency that the Wrapper pings the JVM.
Feature Request #607768.
-
When a JVM refuses to shutdown, the Wrapper can be configured to request a
thread dump using the wrapper.request_thread_dump_on_failed_jvm_exit
property. The Wrapper was then waiting 1 second before the process was
killed. This was not always long enough, resulting in a truncated thread
dump. Increased the pause to 3 seconds.
Feature Request #633761.
-
Fix a bug where wrapper.app.parameter.<n>
and wrapper.java.additional.<n>
properties declared from the Windows
command line were not correctly
handling spaces in their values.
Support Request #802139.
|
 |
-
Fix a problem on UNIX systems where requesting a second thread dump any time
during the life of a single Wrapper process would cause the Wrapper and JVM
to shutdown rather than perform the thread dump.
-
Fix a problem where a, user without permission, attempting to stop an
application was able to delete the pid file even though they were unable
to stop the application itself. This would make the scripts think that
the application was stopped when was actually still running.
-
Fix a problem where an application was being killed prematurely if it took
longer than 6 seconds to exit on its own. The scripts now make sure that
an application always has enough time to shutdown cleanly.
-
Improve the debug output so that packet codes are now shown using a name
rather than a raw number.
-
Reduce the frequency of "Waiting to stop..." messages displayed when removing
an NT service that is currently running. Decreased frequency from once per
second to once every five seconds.
-
Fix a minor problem where the hour in the date returned by
WrapperInfo.getBuildTime() was not base 24.
-
Added -t and -p command line options to the Windows version of the Wrapper
to sTart and stoP the Wrapper as an NT service. This can be used in place
of "net start" and "net stop", which do not always work correctly when a
service takes a long time to start up or shutdown. See the
Launching Your Application (Win32)
section for more details.
-
Add a new method WrapperManager.stopImmediate which will cause the JVM to
exit immediately without calling any stop methods or shutdown hooks.
-
Add a new class, WrapperActionServer, which makes it easy to remotely control
the Wrapper remotely by opening a socket and sending commands. See the
javadocs of the class for more
details.
-
Fix bug #744801. A Java GUI was not being displayed when the application was
run in either console mode or as a service with wrapper.ntservice.interactive
enabled. This problem was introduced in Version 3.0.0 when using 1.2.x or
1.3.x versions of Java. To use interactive services with 1.2.x or 1.3.x
versions of java, please review the documentation for the
wrapper.ntservice.interactive property.
-
Fix a problem where the JVM was not receiving CTRL-C and CTRL-CLOSE events
when running under the Wrapper on Windows. This was not a problem in most
cases as the Wrapper was taking care of the processing of the events. But
the WrapperListener.controlEvent() method was not being called as documented.
-
Changed the way the WrapperSimpleApp and WrapperStartStopApp respond to
control events so that the JVM will respond and call WrapperManager.stop()
even when being controlled by the Wrapper.
-
Modified the suggested behavior of the WrapperListener.controlEvent() method.
Users who have implemented the WrapperListener interface themselves should
review the javadocs. The changes are not
required and applications will continue to function as they did before.
-
Added support for DEC OSF1 (Alpha). Big thanks to Andreas Wendt for
supplying the patch.
-
Fix a problem where the sh and bash scripts were failing if the path to the
script contained spaces.
-
Fix a problem where the JVM would sometimes hang when trying to shutdown if
the wrapper.key parameter was passed to the JVM while not being controlled
by the Wrapper. This would happen if a user copied the command from the
Wrapper's debug output and attempted to run it as is without first removing
the wrapper.key parameter.
-
Implement the ability to specify an NT service's load order group in response
to feature request #764143. See the javadocs for the new
wrapper.ntservice.load_order_group
property for details.
-
Improve the error message displayed when the NT EventLog is full in response
to feature request #643617. The EventLog output will now be disabled if any
errors are encountered while logging events. This prevents the error from
repeating.
-
Improve the error message displayed on Windows when the configured Java
command can not be executed or does not exist.
-
Fix a problem where the Wrapper was leaving a pipe unclosed each time the JVM
was restarted on all UNIX platforms. This was causing the Wrapper to run out
of file handles. Bug #767267, discovered and patched by David Wong.
-
Fix a problem where the '#' character, which signifies a comment, could not
be included in property values. A double hash, '##' will now resolve into a
'#' within the property value. Bug #777303.
-
Added support for FreeBSD. Big thanks to Alphonse Bendt for supplying the
patch.
-
Make the wrapper.port property optional.
-
Changed the way environment variables are loaded from the registry on Windows
platforms so users will no longer get warning messages about not being able
to handle very large environment variables. Prior versions could only handle
environment variables whose expanded value was less than 2048 characters in
length.
-
Fix a problem on UNIX platforms where a shell used to start the Wrapper
running as a detached process would hang when the user attempted to exit
the shell. Thanks to Mike Castle for this patch.
|
 |
-
Added support for Mac OS X. Big thanks to Andy Barnett for supplying the
patch.
-
Fix a segmentation fault on UNIX systems when the first console output
from the JVM was an empty line. Thanks to Mike Castle for finding this.
-
Fix a problem where a 0 length malloc was being called if there were no
configured filters. This was fine on most platforms but caused a crash
on MAC OS X.
-
Rework the initialization of the bash and sh scripts so that they will
work correctly when referenced as symbolic links. Thanks go out to Richard
Emberson for the code to resolve symbolic links.
-
Deprecated the realpath binary in the *NIX distributions as it is no longer
used by the bash or sh scripts. It is being left in for now so as not to
break the build scripts of other projects, but it will be removed after a
couple more releases.
-
Added a test to make sure that
wrapper.ntservice.interactive
is not set to TRUE when an account is specified using
wrapper.ntservice.account.
|
 |
-
Modified the sh and bash scripts so that console log output is disabled by
default when the scripts are launched with the 'start' action. Running with
the 'console' action will still send output to the console. Logging to the
file is still enabled.
-
Modified the wrapper.ping.timeout property so it also controls the ping
timeout within the JVM. Before the timeout on responses to the Wrapper
could be controlled, but the ping timeout within the JVM was hardcoded to
30 seconds.
-
In the last release, some work was done to avoid false timeouts caused by
large quantities of output. On some heavily loaded systems, timeouts were
still being encountered. Rather than reading up to 50 lines of input, the
code will now read for a maximum of 250ms before returning to give the main
event loop more cycles.
-
Fix a problem where the values of environment variables set in the
configuration file were not correct when those values included references
to other environment variables.
-
Fix a potential buffer overflow problem if configuration properties
referenced extremely large environment variables.
-
Fix a potential problem where the inability to expand very large environment
variables would have led to an access violation when run as an NT service.
-
Add some extra checks in the event where the native library can not be loaded
so that the WrapperManager can differentiate between the library missing and
not being readable due to permission problems.
-
Remove the wrapper.ntservice.process_priority from the default wrapper.conf
because its use can produce unexpected results if used improperly. Please
see the property documentation for details.
-
Fix a problem where environment variables in the registry which had no value
were causing the Wrapper to crash with an access violation. This was
introduced in version 3.0.0 with the feature to load environment variables
from the registry. The offending registry entry was WV_GATEWAY_CFG which
appears to be related to Oracle.
|
 |
-
Fix a problem with the wrapper.disable_shutdown_hook. Due to a typo in the
source, the property was being ignored. This was broken in the 3.0.0
release.
-
Fix a problem with the HP-UX release build reported by Ashish Gawarikar.
-
Add the ability to set environment variables from within the configuration
file or from the command line. See the
Environment Variables section for
details.
-
Fix a problem on HP-UX and AIX machines where the stop() function in the
shell scripts was causing a syntax error due to a conflict with a like named
shell command on those platforms. This appears to be an issue with the
Korn shell on all platforms.
-
Fix a problem where very heavy output from the JVM can cause the Wrapper to
give a false timeout. The Wrapper now only reads 50 lines of input at a time
to guarantee that the Wrapper's event loop always gets cycles.
-
Fix a problem on UNIX versions where extra line breaks would sometimes be
added to the logged output when there was large amounts of output being
sent from the JVM.
-
Fix a problem where a large number of calls to WrapperManager.log()
immediately before the JVM exits could lead to the Wrapper incorrectly
reporting that the JVM exited unexpectedly.
|
 |
-
Deprecated the com.silveregg.wrapper package in favor of
org.tanukisoftware.wrapper. The classes and interfaces in the silveregg
package will continue to function, but migration to the new package should
be done when possible. See the project
history for details.
-
On Windows systems change any forward slashes in the wrapper.java.command
property to back slashes. Some users had reported having problems on
Windows XP.
-
Implemented feature request #633178. Added WrapperManager.requestThreadDump()
to force the current JVM to immediately perform a thread dump.
-
Fixed bug where wrapper.logfile.maxsize was being set to 0 if the 'k' or 'm'
unit was omitted.
-
Add the ability to specify an account name and password when installing an
NT service.
-
Add a property, wrapper.ntservice.interactive, which makes it possible to
control whether or not the Java process can gain access to the desktop while
it is running as an NT service.
-
Add limited support for 1.2.x versions of Java. Shutdown hooks are
supported until Java 1.3 so those functions will be disabled. If the
application displays a GUI then Java 1.3 should be used as the GUI can not
currently be displayed when using Java 1.2.x.
-
Made it possible to use the wrapper.pidfile property on all *nix platforms.
Please notice that the property has been removed from the default
wrapper.conf file. The property is not needed when the wrapper is launched
with the bash shell script. The sh shell script will set the wrapper.pidfile
when the wrapper is launched. If either of the scripts provided with the
Wrapper distribution are used then the wrapper.pidfile should always be
removed from your wrapper.conf file.
-
Added a new wrapper.daemonize property which, when set, will form the wrapper
process to be a detached non-session group leader. This makes it possible to
launch the wrapper in such a way that it will not be terminated when the user
launching the process logs out. This had been a problem on Solaris systems
when using the sh shell. The default sh and bash scripts both make use of
this in the default. Please update your scripts for use with this version.
Thanks to Rajiv Subrahmanyam for the patch.
-
Fix a problem where the Wrapper was incorrectly counting the number of
non-daemon threads in BEA's JRockit Virtual Machine. This was causing the
application to shutdown when the non-daemon thread count dropped to 1.
-
Added support for building the wrapper on AIX and HP-UX systems. Thanks for
the patches involved go out to Ashish Gawarikar and William Lee.
-
Implement feature request #653131 to force the JVM to immediately exit when
the user presses CTRL-C multiple times.
-
Added a 'console' action to the bash and sh scripts to make it possible to
launch the Wrapper in the current shell process. The 'start' task will launch
the Wrapper as a spawned daemon process.
-
Fixed a problem where missing environment variables specified in classpath
or library path properties were not being handled correctly.
-
Implemented feature request #676599 to enable the filtering of JVM output to
trigger JVM restarts or Wrapper shutdowns. See the new
wrapper.filter.trigger.n and wrapper.filter.action.n properties.
-
Modify the Win32 version of the Wrapper so that Environment Variables are
always read from the system registry when the Wrapper is run as a service.
By doing this, it makes it possible to change or add the system environment
variables and have them take effect without having to first reboot the
machine.
-
Implemented cascading configuration files. See the
Cascading Configuration Files
section for details.
-
Changed the default value for the wrapper.java.initmemory property to be 3Mb.
The default on Windows and Linux JVMs is 2Mb, but the Solaris JVM requires
a minimum of 3Mb. The minimum value accepted by the Wrapper was changed
from 8Mb to 1Mb to make it possible to reduce the footprint of applications
to what is possible without using the wrapper.
-
Improve the parsing of configuration files so that leading and trailing white
space is now correctly trimmed. It is also now possible to have comments at
the end of a line containing a property.
-
Modify the way exceptions thrown by an application's main method are
presented to the user by the WrapperSimpleApp and WrapperStartStopApp so
they no longer look like a problem with Wrapper configuration.
|
 |
-
Added a new property, wrapper.restart.delay, which allows the user to control
the amount of time to pause between a JVM exiting and a new JVM being
launched.
-
Fixed bug #611024. The Wrapper would sometimes fail to start if
wrapper.max_failed_invocations is set to 1.
-
Fix a problem where the number of non-daemon threads was not being calculated
in some cases.
-
Implemented feature request #491443. Environment variables referenced in the
wrapper.conf file will now be evaluated as the file is loaded. The windows
syntax for environment variables is used on all platforms to make them
platform independent.
-
Fixed a problem where the wrapper.conf was being open with both read and
write locks when a read lock is all that is needed. Made the wrapper fail
on startup if another application held a read lock on the conf file.
-
Modified the message displayed when the native library could not be found,
so that it is much more descriptive. Hopefully it will cut down on questions
caused by configuration problems.
-
Implemented feature request #613539. Modified the wrapper.java.library.path
to function like the wrapper.java.classpath.n properties so that multiple
directories can be specified in the library path in a platform independent
way. The old property is still supported, but deprecated.
-
Fix Bug #632215. The WrapperManager.isLaunchedAsService() method was always
returning false, even when run as a service under Windows. On Linux, the
Wrapper is always run as a console app, so this method will always return
false.
-
Improve the message thrown when user code attempts to access System.in from
within a JVM being controlled by the Wrapper. System.in will not work
because the JVM is a spawned process.
|
 |
-
Fixed a compiler problem on Solaris some systems.
-
Added a new property, wrapper.cpu.timeout, which allows the user to control
how much time without receiving any CPU the Wrapper will tolerate before
displaying a warning message. The CPU timeout feature was added in 2.2.7
but the default timeout of 10 seconds was not configurable.
-
The Wrapper was only allowing 5 seconds between the JVM informing the
Wrapper that it was going to exit and the JVM process actually exiting.
This would cause the Wrapper to terminate the process prematurely in
cases where an application shutdown thread took longer than 5 seconds to
complete. The Wrapper now allows wrapper.jvm_exit.timeout seconds for
the JVM process to exit on its own before being forcibly terminated.
-
When there is a configuration problem or a resource is unavailable, a JVM
will sometimes exit abnormally very shortly after being launched. This
can lead the the JVM being infinitely restarted due to a simple class
path misconfiguration. To work around this, the Wrapper has always had
a hard limit of 5 restarts within a short period of time. If the JVM
has been running for more than a few minutes, then the count was reset.
In this version, a new property. wrapper.max_failed_invocations was added
to allow the max value to be set. The time period which the JVM must
now be running for the JVM launch to have been considered a success for
restart purposes is set using the new wrapper.successful_invocation_time
property.
-
The number of advanced properties which most users do not need has been
increasing as the Wrapper has been made more and more flexible. This
has been causing confusion in their usage by people who play with them
without first reading the documentation. To solve this, the advanced
properties were removed from the default configuration file. They still
function. But users must now read to the advanced configuration
documentation to learn about their existence. Added quite about to the
descriptions of these properties to hopefully clear up any confusion
about their usage.
-
When the JVM exits abnormally, the Wrapper will pause for a few seconds
before starting another JVM. If the user pressed CTRL-C during this
pause, a new JVM would still be launched. The new JVM was exiting
immediately but it was a waste of time. The Wrapper now recognizes the
event and aborts launching the new JVM.
-
Added a page to the documentation which shows inline javadocs. This
will hopefully make it easier to navigate them as part of the full
documentation set.
-
Added a new method to the WrapperManager which enables user code to
log at any log level.
-
Added a new Helper class WrapperStartStopApp which allows users to easily
integrate applications like Tomcat which use a separate class to stop
the application.
-
Added a samples section to the documentation. Just includes Tomcat 4
for now.
|
 |
-
Fix a problem where the JVM was trying to reconnect the Wrapper as it was
being shutdown. This was causing problems if the JVM was being restarted.
-
Added support for the system being suspended to RAM or disk. Also improved
wrapper performance when a system is under 100% load. See the new example
output in the example section.
-
Fix a problem where the log output was not being directed to a file called
wrapper.log in the same directory as the Wrapper binary in the event that the
configured wrapper log file could not be accessed.
-
Fix a problem where the Wrapper was not shutting down the JVM correctly when
all non daemon threads completed. Normally a JVM will exit when all of its
non daemon threads have completed so this was causing some problems.
(Thanks to Jung Tamas)
-
Added the ability to set the priority of the Wrapper and its JVM when run
as an NT service or console application. The same thing can be better
achieved on Unix systems by using "nice" in the shell script used to launch
the Wrapper. See the documentation for for details.
-
JVM information was not being displayed correctly when the Wrapper native
library could not be loaded.
-
Added a new property to cause the wrapper to attempt to request a thread dump
when the JVM does not exit on request.
-
Improved the documentation of the WrapperSimpleApp and WrapperListener classes.
-
Adding a new property wrapper.shutdown.timeout to allow the user to extend the
length of time that an application is allowed to take shutting down.
-
Rework the way the shutdown process works so that System.exit will never be
called before the stop method in WrapperListener has had a chance to complete.
-
Add a Restart button to the TestWrapper application.
-
Fix a problem on Unix versions where '%' characters in Java output would
sometimes cause the wrapper to crash. Somehow missed getting this into the
last release.
-
Added a test to make sure that WrapperManager.stop is not called recursively.
-
Added support for building under Windows XP. Prebuilt installations had
already been working.
|
 |
-
Fix a problem where '%' characters in Java output would sometimes cause the
wrapper to crash. (Thanks to Frode Moe)
-
Added support for requesting a Java thread dump without shutting down the
Java process.
-
Fixed a problem on windows where the java command was looking in the windows
system and system32 directories for the java executable before checking the
path when the full path to the java executable was not specified in the
configuration file. This could lead to different JVM being run from the
Wrapper than was run if java -version was run from the command line. The
Wrapper will now attempt to resolve the full java path using the PATH
environment variable.
-
Added debug output showing Java version information when the JVM first starts.
-
Modified c source to use /* */ style comments rather than // style comments.
Some people were having problems with some compilers.
|
 |
-
Fixed bug issue when reading configuration files from Windows on Unix.
-
Deprecated the wrapper.debug property in favor of loglevels.
-
Added support for service descriptions for Win2k and XP.
-
Added new logger functionality includes the following features: Loglevels like
Log4j, NT Eventlog support, UNIX syslog support and rolling log files.
-
Added wildcard support for classpath entries in wrapper.conf.
-
Added the ability to specify configuration properties from the command line.
-
Changed the way NT services are installed so that a patched version of the
Wrapper.exe file no longer needs to be created to reference the wrapper.conf
file.
|
 |
-
The value of APP_NAME in the bash or sh scripts no longer needs to be the
same as the script.
-
Added the ability to format and/or disable file logging and output to the
console.
-
Set mode of executables in binary release tar files so that they can be run
without modification after being extracted.
-
Fixed line feeds in release so that bat files are always CRLF, unix scripts
are always LF. Other source files are always CRLF in ZIP archives and LF in
tar.gz archives.
-
Make the build fail if Wrapper.exe or Wrapper.dll do not exist for Windows
builds.
-
Added an empty wrapper.log to the releases so that the TestWrapper example
program runs out of the box.
|
 |
-
Added template scripts and conf files for ease of integration with other
applications.
-
Cleaned up the build.
-
The WrapperSimpleApp method of launching applications was not working correctly
with applications whose main method did not return.
-
Add sample scripts and wrapper.conf files in the bin and lib directories.
These scripts are used to start a sample application which runs out of the box.
See the new example.html page in the
documentation for more details.
-
Get rid of the platform specific directories in the bin and lib directories.
-
Enable relative paths for Windows version. In previous versions of Wrapper,
it was necessary to always use absolute paths because the working directory of
the wrapper would be then NT System32 directory when run as a service.
-
On the windows version, the wrapper always sets the current working directory
to the location of the wrapper executable immediately after startup.
-
Improvements to the documentation / web page.
|
|
by Leif Mortenson
|
|  |
|
 |
|