1: Java Service Wrapper Revision History.
2: --------------------------------------
3:
4: 3.5.15
5: * Add a new _WRAPPER_CONF_OVERRIDE setting to the Wrapper dedicated command
6: batch files on Windows so it is now possible to control whether or not the
7: first parameter is the configuration file name. The ability to specify an
8: alternate configuration file is now disabled by default as it was confusing
9: for users who tried to pass other parameters to the JVM.
10:
11: 3.5.14
12: * Fix a problem in the AppCommand.bat.in file where a parenthesis in the
13: file name of the Wrapper binary would have caused a
14: "PATH was unexpected at this time" error.
15: * (Standard, Professional) Fix a problem when using a localized version of
16: the Wrapper on Windows 64-bit platforms where the Wrapper would continue
17: to use the default system language even wrapper.lang was used to specify
18: a different language. Introduced in 3.5.12.
19: * Fix a problem in the Windows AppCommand.bat.in command based batch file
20: where the 'status' command was incorrectly being reported as 'query' in the
21: usage output. The 'status' command had always worked correctly if used.
22: * Fix a problem on UNIX platforms where some asynchronous messages were
23: causing a warning message "Coding Error..." to be logged in place of the
24: intended message. This could be seen if the configured log file did not
25: have write permissions. Other than the incorrect log message, the Wrapper
26: worked correctly. Introduced in 3.5.2.
27: * Fix a problem in the UNIX script where running with upstart wasn't working
28: correctly when RUN_AS_USER was set.
29: * Relax security checks when running the 'status' command against the UNIX
30: shell script so it now allows any user running the script to perform the
31: read-only check of the pid file.
32: * Fix a problem with the UNIX script where the 'remove' command was trying to
33: stop a running application even when the application had not been installed.
34: * Fix a buffer overflow which could potentially cause a crash during the
35: installation of a Windows Service when wrapper.ntservice.account was
36: specified. This was introduced in 3.5.12.
37: * Fix a heap corruption which could occur on startup and potentially cause a
38: crash. Only Windows systems, which use the System Event logs, were affected.
39: Discovered from a code review, there had never been any reports of this
40: causing problems for users. This could happen if the configured wrapper.log
41: could not be written to as the Wrapper always tries to write to the Event
42: Log in such cases. Introduced in 3.5.12.
43: * Add a new version comparison between the UNIX shell script and Wrapper to
44: start showing a warning in case of a version mismatch. The check will only
45: work if the shell script and Wrapper are each of at least version 3.5.14.
46: * Added a new wrapper.pidfile.strict property which will tell the Wrapper not
47: to start if the pid file already existed. Defaults to false for backwards
48: compatibility.
49: * Make the Java side of the backend socket more resilient in case of a read
50: or write timeout. The backend socket does not have a timeout set by default
51: so this should not have been an issue. A couple users reported problems on
52: specific systems however which led to this fix.
53: * To aid in the testing of the backend socket timeout, a new
54: wrapper.backend.so_timeout system property was added to make it possible to
55: configure the backend socket to use a timeout. See the Javadocs of the
56: WrapperManager class for details.
57:
58: 3.5.13
59: * Fix a typo in the script where the environment variable 'TR_BIN' should
60: actually be 'TREXE'. This was causing the "install" command on UNIX
61: platforms to fail. Introduced in 3.5.12.
62: * Fix a heap corruption which could lead to a crash that would occur the
63: second time an internal buffer used for logging was expanded. The buffer
64: would be expanded the first time a log line over 2048 characters in length
65: was encountered. Then the second expansion would happen when a line at
66: least 1024 characters longer was encountered. Introduced in 3.5.11.
67: Bug ID #3423108
68:
69: 3.5.12
70: * Put more descriptive Text in case the Wrapper is using integration method 4,
71: but the jar file deos not specify the Main-Class correctly in its meta
72: information.
73: * Fix a bug when failing to grant the LogOnAsService permission to a domain
74: user.
75: * Fix a bug where the ident for the syslog on Unix platforms was broken since
76: 3.5.0. This was because when opening the syslog, the Wrapper was freeing the
77: memory for pointing to ident. However the string pointer ident will be
78: retained internally by the Syslog routines. And must not free the memory that
79: ident points to. Bug #3404978.
80: * Add a check on the script to make sure the 'tr' command exists on Unix
81: platforms.
82: * Improve the parsing of log formats so that format tokens are recocognized
83: even if they are lower case. This affects the wrapper.console.format,
84: wrapper.event.default.email.maillog.format, wrapper.logdialog.format, and
85: wrapper.logfile.format properties.
86: * The Wrapper parses log formats by looking for known tokens, any invalid
87: tokens are simply ignored. If the entire format is made up of invalid tokens
88: then this resulted in the Wrapper logging an empty line, which was not very
89: useful and caused confusion when encountered. The Wrapper now reverts to the
90: default log format in such cases. This affects the wrapper.console.format,
91: wrapper.event.default.email.maillog.format, wrapper.logdialog.format, and
92: wrapper.logfile.format properties.
93: * Improve the debug output while loading native libraries to avoid confusion
94: about the meaning of the warning logged about attempts to load alternately
95: named native library files.
96: * Fix a problem on Unix platforms where the default umask was being set to 0000
97: rather than inheriting it from the parent process when running as a daemon
98: process. This can be a security problem as log and other files have global
99: read/write access. Introduced in 3.5.8. Can be worked around by setting
100: the wrapper.umask property to a safe value.
101:
102: 3.5.11
103: * Fix a potential crash on Windows caused by a buffer overflow. This has been
104: a problem since version 3.5.0 and affects configurations which define more
105: than one wrapper.ntservice.dependency.<n>. Depending on what was in memory,
106: this did not always result in a crash. It has very reproducible behavior for
107: a given configuration file.
108: * Fix a problem on Windows where the Wrapper was taking 15 seconds or longer to
109: startup on some systems because the WinVerifyTrust system call was having
110: problems updating the CRL. This had been a problem since the Wrapper
111: binaries started being signed in version 3.5.7. If the WinVerifyTrust call
112: takes longer than the configured wrapper.startup_thread.timeout then the
113: Wrapper will continue to startup without further delay.
114: * (Standard, Professional) Explicitly remove the certificate of the customized
115: binary during customization. There were problems resigning the binary with
116: another certificate otherwise.
117: * If the Wrapper is unable to write to the configured wrapper.logfile for any
118: reason then we always fall back to a default log file and then log a message
119: about the failure. If the default also fails then that is also logged but
120: the messages would only be logged to the console in most cases. Modify the
121: Wrapper so we now always send both messages to the syslog or EventLog
122: regardless of what the wrapper.syslog.loglevel is set to. This is important
123: to help track down the cause of logfile access problems.
124: * Starting with version 3.5.0, it was internally possible to print out
125: multi-line log messages so that all of the lines would always be grouped
126: together in the log file. This version modifies the logging code slightly so
127: that such multi-line log output is now logged as a single message in the UNIX
128: sylog or Windows EventLog.
129: * Fix a problem where very long lines of output from the JVM would cause the
130: Wrapper to appear to hang for a while. The first time a single line of
131: output containing several hundred thousand characters was logged, an internal
132: buffer was being incrementally increased by 100 characters per cycle. The
133: Wrapper now increases the size based on last known size to greatly reduce the
134: number of cycles needed to choose a new buffer size.
135: * Modify the PAUSE_THREAD command so it is now possible to wait indefinitely.
136: Only useful for testing the Wrapper.
137: * Add a new PAUSE_LOGGER command to make it possible to pause the next log
138: entry. Only useful for testing the Wrapper.
139: * On UNIX, the stdout/stderr pipe between the JVM and Wrapper was not being
140: cleaned up correctly. This resulted in a small leak but was otherwise
141: harmless. The pipes are now cleaned up and initialized for each JVM
142: instance.
143: * Fix a problem where the Wrapper could fail to restart the JVM when the
144: restart request originated in the JVM if the system was experiencing very
145: heavy IO resulting in long disk IO queues. This was causing the Wrapper's
146: main loop to block on the write and miss the restart request, causing the
147: Wrapper to shutdown rather than restart. This could affect all platforms.
148: On Windows, it could also be reproduced by making a selection in the console
149: to freeze output and then making a request from within the JVM to restart.
150: * Add a new WrapperPropertyUtil helper class to make it easer to access Wrapper
151: property values from within the JVM.
152: * Fix a bug on some platforms where java log output could get corrupted due to
153: misuse of a strncpy system function. This function warns that some
154: implementations do not support overlapping memory copies. The problem could
155: only be reproduced on a single Linux test machine in lines following an empty
156: line of output. This problem has existed since 3.4.0.
157:
158: 3.5.10
159: * Setting wrapper.jvm.port to '0' (zero) will make the JVM to assign an
160: available port for the backend socket by itself.
161: * Add warnings in the log file if an integer configuration property value
162: contains a non-numerical value. Previously, the Wrapper would silently
163: ignore the problem and use the value of 0 if the number started with an
164: invalid character, it will now return the default value. If the property
165: value started with valid numerical characters then those were, and still will
166: be, used to generate a value, but the invalid characters will be trimmed.
167: The later is being kept this way to avoid breaking old configurations.
168: * Add warnings in the log file if a boolean configuration property has any
169: value other than TRUE or FALSE. It will still return a value of FALSE
170: for other values to avoid breaking old configurations.
171: * Add a warning if an invalid value is specified for the wrapper.on_exit.<n>
172: property.
173: * Add a new wrapper.log.lf_delay.threshold property which makes it possible
174: to control how long a partial line of Java log output will be allowed to be
175: buffered until it is completed with a line feed. If the threshold is
176: exceeded then the partial line will be logged as a full line resulting in an
177: extra line feed in the log output. All previous versions would do this
178: within 1-2 ms. The default is now 500ms.
179: * (Standard, Professional) Make it possible to customize the manufacturer
180: through the customize options.
181: * (Professional) Fix a problem where the Wrapper was sending a CTRL-BREAK
182: rather than a CTRL-C signal to child processes launched with
183: WrapperManager.exec when destroying them on Windows. For most child
184: processes this was not a problem, but if the direct child process was a JVM
185: then the CTRL-BREAK was triggering a thread dump rather than asking the JVM
186: to exit. The Wrapper was then timing out and forcibly killing the JVM child
187: process.
188: * (Standard, Professional) Fixed a bug, where the timezone ICT when set by
189: the wrapper.timezone property got misinterpreted as IST.
190: * (Standard, Professional) Fixed a problem where the UTC offset value in the
191: wrapper.timezone property was not being parsed correctly on UNIX platforms.
192: This led to the Wrapper to using an offset UTC0000.
193: * Take out the warning about unset LANG environment variable on Linux and
194: AIX systems. On system startup, some systems fail to set the LANG
195: environment variable. This is not really a problem for the Wrapper and the
196: warning was causing confusion for users so we decided to remove it.
197:
198: 3.5.9
199: * (Standard, Professional) Fix a problem on Windows where network adapters
200: whose names contained "PRO/1000" were being removed from the list of hostids
201: displayed when "wrapper.exe -h" was run. This did not affect existing server
202: license key files generated for hostIds reported by 3.5.7 or earlier, or
203: development license keys. But it did cause the Wrapper to report that no
204: valid hostIds could be found when the Wrapper was started without a license
205: file. This was caused by some test code added in 3.5.8 that we failed to
206: remove.
207: * Fix a problem where the Wrapper was not correctly yielding control back to
208: its main loop when very large amounts of continuous output was being logged
209: from the JVM. Introduced in version 3.4.0. In versions prior to 3.5.8, this
210: could have caused the JVM to timeout and restart itself. That particular
211: issue was resolved but the Wrapper process in 3.5.8 would still have been
212: unresponsive when this was happening. The Wrapper will now always yeild back
213: to its main loop after 250 milliseconds of continuous logging.
214: * Fix a problem where the WrapperManager could block trying write debug output
215: if the current user application was writing very large amounts of output to
216: the console as well. In extreme circumstances this led to the Wrapper
217: thinking that the JVM was frozen. This was only an issue if debug output was
218: enabled.
219: * Restructured the shell script so all editions now use the same script again.
220:
221: 3.5.8
222: * (Standard, Professional) Starting with version 3.5.5, we invalidated the use
223: of all 00ff* hostids on Windows to avoid problems with changing hostids when
224: users have a Juniper Network Connect network adapter on their system. This
225: turned out to be too restrictive as Guest OSs running under Parallels also
226: make use of this hostid range. The Wrapper is now more careful to only
227: invalidate actual Juniper Network Connect hostids.
228: * (Standard, Professional) Improve the message shown to the user when the
229: Wrapper is unable to locate any hostids for a system.
230: * Fixed a problem with the wrapper script on Solaris, where the option -F was
231: not available for grep.
232: * Added Windows version information on the wrapper debug output.
233: * Added a wrapper.log.warning.threshold property which makes the Wrapper show
234: a warning whenever it detects that the Wrapper took a long time to record a
235: log message. This was added to test a reported issue caused by slow IO on
236: very heavily loaded systems.
237: * Fix a problem where a filter that requested the JVM to restart would be
238: ignored if the JVM exited on its own immediately. The Wrapper is now more
239: consistent so that restart requests from within the JVM or filters will
240: always take priority over such exit requests. External shutdown requests, or
241: those from other actions will still behave as they did in the past and
242: continue to shutdown the Wrapper. The Wrapper also logs messages in debug
243: output if an outstanding restart request is being preserved or ignored.
244: * Fixed a problem in the AppCommand.bat batch file which could occur on some
245: Windows platforms with certain multi-byte system encodings. The script has
246: been rewritten and questionable parts have been simplified. The functionality
247: of the script has been preserved.
248: * Added the environment variable WRAPPER_CONF_DIR, which can be used for
249: the configuration properties. Feature Request #3160644.
250: * Made the script exit with the right exit code received when running the
251: script as different user, specified in RUN_AS_USER. Bug #3185281.
252: * Fix an access violation which could happen when reporting that the code
253: signing certificate has failed to been verified.
254: * Log an error if the backend socket is forcibly closed externally. It had
255: been getting logged at a debug log level. The message is "An existing
256: connection was forcibly closed by the remote host. (0x2746)". Because the
257: message was only logged if debug output was enabled, the JVM would be
258: restarted with no clear explanation as to what happened. The source of the
259: socket closure is under investigation.
260: * (Professional) Added the Java call fireUserEvent to the WrapperManager API.
261: This enables to fire user event mails, actions without the filter trigger.
262: * Fix a warning on Mac versions if the configured java command was not a
263: universal binary. A check was added in 3.4.0 to make sure that the
264: wrapper.java.command pointed directly to an executable to avoid unexpected
265: behavior when running a script. The message is only a warning and the
266: Wrapper continues regardless. Standard ppc, ppc_64, x86_64, i386, as well
267: as the universal binaries will now all work correctly without a warning.
268: * The default value of the wrapper.*.umask properties is using the current
269: umask the process has. Before the default value was always 0022.
270: * Add a new wrapper.backend.type property that is used to control whether the
271: Wrapper communicates with the JVM using the traditional "SOCKET" or new
272: experimental "PIPE". This was added as a workaround to a rare problem where
273: some Windows machines are closing the socket at an OS level. This was only
274: ever seen on Windows 2003, but could exist on other Windows versions as well.
275: * Add a new experimental wrapper.use_javaio_thread property which causes the
276: Wrapper to handle all java console output in a dedicated thread.
277: * Add a new WrapperManager.isNativeLibraryOk() method which lets user code
278: easily test whether or not the native library was loaded and initialized on
279: startup.
280: * Add a new PAUSE_THREAD command to the wrapper.commandfile property which
281: makes it possible to test how the Wrapper behaves when various threads block
282: or freeze. This was used to simulate and reproduce issues on heavily IO
283: bound servers.
284: * Improve the way the Java side of the Wrapper behaves when the Wrapper fails
285: to ping the JVM for an extended period of time. The JVM used to exit to let
286: itself resync itself with the JVM. This was causing problems on systems
287: which were heavily IO bound because the Wrapper could block for a while while
288: trying to write to the log file and the JVM was exiting. The JVM will now
289: never exit under such circumstances. The JVM will never become orphaned
290: because it will still exit almost immediately if the backend socket or pipe
291: with the Wrapper is ever closed.
292: * Deprecate the WrapperManager.appearOrphan() method as it is used to simulate
293: a failure mode which is no longer possible with the Wrapper.
294: * Changed the way the Wrapper is handling certificate errors regarding the
295: code signing/timestamping certificate. The Wrapper will now only shutdown
296: itself if the signature of the binary was not successfully verified because
297: the binary or signature has been malformed but not if any problem with
298: the counter-signer has been found. Starting with 3.5.7, the Windows Wrapper
299: binaries are signed. Some users with locked down Windows 2008 systems had
300: problems with the Wrapper refusing to start because the Comodo certificate
301: had been disabled on their system.
302: * Add a new wrapper.java.detach_started property which makes it possible to use
303: the Wrapper as a simple tool to launch Java applications. When enabled, the
304: Wrapper terminates immediately and the JVM is left to run on its own. Also
305: add new wrapper.java.outfile and wrapper.java.errfile properties which make
306: it possible to redirect the stdout and stderr of the JVM to files when
307: detached.
308: * When running the Wrapper as a specified User Account, through the
309: wrapper.ntservice.account property, the Wrapper will add permission for the
310: account to log on as service automatically upon install. Feature Request
311: #3286491.
312: * Fixed a problem binding the backend socket on Windows. If another process
313: bound a port inside the wrapper.port.min and wrapper.port.max range using the
314: SO_EXCLUSIVEADDRUSE option, the Wrapper would stop at this port report
315: an Access Permission problem and omits binding any further port in the range.
316: This problem existed ever since the Wrapper was released.
317:
318: 3.5.7
319: * Changed the way the script is installing the daemon gets installed on an AIX
320: system. The script now uses inittab & SRC.
321: * Fix a problem in the shell script that was preventing the script from
322: starting the Wrapper correctly if a file or directory existed in the current
323: working directory which was one character in length. This was only a problem
324: when the delta-pack naming of the Wrapper was used. This was easy to
325: reproduce on AIX systems on system restart because a "u" directory exists in
326: the root directory by default. This had been a problem since 3.4.0 when
327: it was introduced as a fix to a Solaris problem. The root cause was a
328: missing set of quotes in the tr command.
329: * Fix a problem in the shell script that was preventing the script from finding
330: the running wrapper process when it was started when the working directory
331: was in the same directory as the wrapper binary, but queried later from
332: another location. It would also fail if it was started from another
333: location, but then queried from the location of the Wrapper. This was
334: introduced in version 3.5.6 when the script stopped changing the working
335: directory in the script.
336: * Add a new GC action that will cause the JVM to immediately perform a full
337: garbage collection sweep. See the wrapper.commandfile,
338: wrapper.filter.action.<n>, wrapper.check.deadlock.action, and
339: wrapper.timer.<n>.action properties for details.
340: * (Professional) Modify the wrapper.event.<event_name>.command.block.action
341: property slightly so it will now correctly warn if an unknown action is
342: encountered. It had been defaulting to CONTINUE silently.
343: * Modify the timing of the message shown when an #encoding directive is missing
344: from the top of a configuration file. It was only being logged if debug
345: output was enabled. It will now also be logged if the #include.debug
346: directive is specified.
347: * Fix the indentation of warning messages about encoding or include problems in
348: configuration files.
349: * (Standard, Professional) Fix a problem where include file problems could
350: cause the shell script to have errors due to invalid translated output from
351: the Wrapper.
352: * Add a warning when the maximum include depth is reached and include debugging
353: is enabled. The Wrapper had always just silently skipped the include.
354: * Fix a problem where #include.required directive was not correctly preventing
355: startup if the include file was missing but the required include was in a
356: nested include.
357: * Fix a problem where the cause of some fatal include problems were not being
358: logged correctly, resulting in a simple, non-informative message only that
359: the configuration file failed to be loaded. This was a problem since 3.5.5.
360: * Fix a Windows problem where the Wrapper could fail to start as a service if a
361: defined environment variable would expand to a length larger than the 32k
362: limit specified in the ExpandEnvironmentStrings system function. This was a
363: problem on all Windows platforms prior to version 3.5.5, but only on Windows
364: 2000 since then, when the code used to reload the environment from the
365: registry was disabled for newer versions of Windows. We now simply skip the
366: expansion of the problem variable and continue with a warning. Bug #3103776.
367: * Add a set of optional system properties that the WrapperSimpleApp,
368: WrapperStartStopApp, and WrapperJarApp helper classes are aware of to tell
369: them to ignore uncaught exceptions thrown within the main methods of the user
370: application. The exceptions will still be logged, but they can now be
371: configured so that the main method is just allowed to end without causing the
372: Wrapper to shutdown in an error state. Java on its own will stay running in
373: such a case as long as it has launched at least one non-daemon thread prior
374: to the uncaught exception being thrown. This does not affect most users, but
375: an application was found that was having problems because of this difference
376: in behavior. See the javadocs of the helper classes for details.
377: * (Professional) Fix a problem when looking for the correct exit code to use
378: for the wrapper.event.<event_name>.command.on_exit.<n> property. The Wrapper
379: now searches for a value as follows:
380: wrapper.event.<event_name>.command.on_exit.<n>,
381: wrapper.event.<event_name>.command.on_exit.default,
382: wrapper.event.default.command.on_exit.<n>, then
383: wrapper.event.default.command.on_exit.default. The third pattern had been
384: getting skipped in previous versions since it was added in version 3.3.0.
385: * (Professional) Add logic to report a warning if an unexpected value is
386: specified for the wrapper.event.<event_name>.command.on_exit.<n> or
387: wrapper.event.<event_name>.command.block.action properties.
388: * (Professional) Clean up the message log levels so the output is as expected
389: when using the wrapper.event.<event_name>.command.loglevel property.
390: * (Professional) Improve the wrapper.event.<event_name>.command.on_exit.<n>
391: property so the configured action will now work even if the command exits
392: after the block time out has expired. In previous versions, there was no
393: way to make the Wrapper do anything other than continue.
394: * (Professional) Fix a problem where the Wrapper was failing to detect a JVM
395: exit correctly if an event command had been fired first. The only problem
396: was that the Wrapper was always reporting a JVM exit code of 0 rather than
397: the actual exit code.
398: * Fix a buffer overflow on Windows when either installing as a service, or
399: updating an existing service. The problem only occurred when properties
400: containing spaces, or Java passthrough arguments containing spaces were
401: specified on the command line. The running service did not have any
402: problems. This was introduced in 3.5.0.
403: * (Standard, Professional) Improve the error message logged when an unlicensed
404: version of the Wrapper's native library is used.
405: * (Standard, Professional) Fix a buffer overflow problem on Windows when
406: creating a customized Wrapper binary if the target binary name did not
407: include the ".exe" extension. This problem existed since its intruduction in
408: version 3.3.7.
409: * The wrapper.exe, wrapperw.exe and wrapper.dll binaries are now being signed
410: on Windows making it possible to verify that valid Tanuki Software binaries
411: are being used.
412: * Implemented a way to install, remove, start, stop, etc., the Wrapper as a
413: Windows service from a non-elevated (UAC) console. The Wrapper is elevated
414: transparently using a child process. This is needed starting with Windows
415: Vista and 2008 for smooth interaction with the Windows Service Manager.
416: * (Standard, Professional) Fix a problem where the wrapperjni_*.mo localized
417: files were not being loaded correctly. These messages are only shown when
418: debug output is enabled. Application and Wrapper localization was working
419: fine. Introduced in 3.5.5.
420: * (Standard, Professional) Enhanced the ability to run with localizations
421: other than the system language on Windows. The Wrapper process locale was
422: not being set correctly. So Japanese text was not always showing correctly
423: if the wrapper.lang property was set when the OS was English or German.
424: The Java process still has an issue where it will always start with the
425: system default value for the file.encoding system property. This can still
426: cause problems writing Japanese text when the file.encoding is German for
427: example.
428: * Added support in the shell script for starting/installing the wrapper on
429: system boot with upstart.
430: * Fix a problem in the shell script where it would fail to recognize a running
431: Wrapper if the Wrapper command line or path contained a square bracket.
432: * Modify the way we test for the existance of the temp directory so we now
433: generate our own file name rather than using File.createTempFile. On some
434: systems createTempFile was taking a long time because it requires that Java
435: initialize its internal entropy. We discovered that large numbers of files
436: in the java.tmpdir directory makes Java's entropy initialization code very
437: slow. This has been a potential issue since 3.5.0.
438: * Fixed a problem on Windows where passthrough arguments after a "--" which
439: contained spaces were not being passed through to the JVM intact, they were
440: being split at the spaces into multiple arguments.
441: * Fix a problem on Windows where the Wrapper could sometimes crash on shutdown
442: if more than one thread got into the cleanup code at the same time. This
443: did not affect running applications and was only an issue on shutdown. It
444: was more likely if a language pack was loaded. Introduced in 3.5.3.
445:
446: 3.5.6
447: * Fix a problem on UNIX platforms where the log file path was being calculated
448: incorrectly if an absolute path was specified for wrapper.logfile, and the
449: file did not already exist. A warning message was being displayed but the
450: Wrapper would continue using the default log file. There was a problem in
451: the message displayed which caused a crash on some platforms include Mac OSX.
452: Introduced in version 3.5.5.
453: * Fix a problem on Windows platforms where the Wrapper would crash if it could
454: not access the directory of the configured wrapper.logfile.
455: Introduced in version 3.5.5. Bug #3087424.
456: * Improve the way warnings are logged when there are problems writing to the
457: configured wrapper.logfile so that the message will now be logged into the
458: log file that the Wrapper ends up using in case it is successful in falling
459: back to a default log file.
460: * Fix a problem on Windows platforms where wrapper.java.additional.<n>
461: properties that were specified on the command line, and contained spaces,
462: were not being requoted correctly when building up the Java command line.
463: Introduced in version 3.3.6.
464: * Fix a problem where the warning message logged for invalid values of the
465: wrapper.java.additional.<n> property, contained corrupted text. Introduced
466: in version 3.3.6.
467: * Fix a problem on UNIX platforms where an invalid value for the
468: wrapper.java.additional.<n> property was correctly being reported and then
469: skipped, but the resulting command line to launch the JVM had a blank value
470: that was causing the JVM to fail to launch. An invalid value is any value
471: that does not begin with a "-" character.
472: * Add a new WRAPPER_INIT_DIR environment variable which can be used to
473: reference the working directory from which the Wrapper was launched. This is
474: needed for certain applications because the Wrapper always changes its
475: working directory to the location of the Wrapper binary.
476: * Modify the UNIX shell script so it no longer changes the current working dir
477: to the location of the script. This is no longer needed because the Wrapper
478: has been changing the working directory to its own location since version
479: 3.2.0.
480: * Add a new wrapper.request_thread_dump_on_failed_jvm_exit.delay property to
481: control how long the Wrapper will wait after doing a thread dump before
482: killing the Java process. This delay has always been hardcoded to 5 seconds.
483: * Clean up the text of several warning messages about invalid configuration
484: values to make them more consistent.
485: * (Professional) Add a new wrapper.jvm_kill.delay property which makes it
486: possible to control the amount of time to allow between the jvm_kill event
487: being fired and the JVM actually being killed. Useful if an external event
488: command is fired that needs to do something with the JVM process first.
489: * (Professional) Fix a problem where the output of the
490: wrapper.event.<event_name>.message and wrapper.event.<event_name>.loglevel
491: properties were not displaying correctly on UNIX platforms.
492: * (Professional) Fix a problem on UNIX platforms where the Java side of the
493: Wrapper was not being correctly notified if a large number of child
494: processes that had been launched with WrapperManager.exec, exited at the
495: same instant. Some of them were going into a defunct state until the next
496: child exited, at which point they would be cleaned up. This was mainly an
497: issue on JVM shutdown if the user code was calling WrapperProcess.waitFor()
498: as part of its shutdown process. WaitFor calls at any point were getting
499: stuck and would remain so until another child exited. As part of this fix,
500: there were also several changes to the Windows implementation to bring the
501: two code bases into sync.
502: * Fix a problem on Windows when multiple threads were creating Childobjects,
503: Handles could have been unintendedly get inherited by another Child Process,
504: causing problems on reading/writing to the Input/Output/Errorstream.
505: * Fix a problem on solaris and AIX when errno calls were not thread safe due
506: to a compiler switch.
507: * Fix a problem where debug level warning output while loading the Wrapper
508: configuration was being displayed on startup. This could be fixed because
509: the Wrapper actually loads the configuration twice, and such output is now
510: only logged on the second call.
511: * (Standard, Professional) Remove the undocumented ability to define a single
512: file share mapping without the index. This would cause confusion if used,
513: and complicated the code.
514: * (Standard, Professional) Fix a byte alignment problem caused by a bad
515: compiler directive on Windows platforms. It was known to cause a crash when
516: defining mapped drives on 64-bit Windows versions. The problem was in the
517: source since version 3.3.7, but is not known to cause any other issues.
518: * (Standard, Professional) Modify the messages displayed when network shares
519: are mapped or fail for some reason. Also add messages about them being
520: unmapped on shutdown.
521: * On some Windows platforms, a failure to delete a rolled log file was not
522: being reported correctly. The system function to delete a file was
523: returning success even if it had failed. We now double check.
524: * Fix a deadlock in the code that is used to send data to the Java process.
525: It was only possible if debug level output was enabled and log file rolling
526: was enabled. Introduced in 3.3.7.
527: * Fix a problem where the Wrapper was not notifying the JVM whenever the log
528: file was rolled and the new name was the same as the previous one, as it is
529: when wrapper.logfile.rollmode is anything other than NONE or DATE.
530: * Fix a problem where the WrapperManager.getWrapperLogFile() was not returning
531: the accurate log file name until the first time the log file was rolled after
532: each JVM invocation. This was only noticeable if the wrapper.logfile
533: contained either the "ROLLNUM" or "YYYYMMDD" tokens.
534: * Correct an error message that was displayed on UNIX platforms when the
535: configured java binary could not be accessed. The message referenced a
536: buffer whose contents were undefined on some platforms.
537: * Fix a problem on z/OS where due a difference in the API used to lock a
538: mutex compared to all other UNIX platforms, the mutex's locking and
539: unlocking code were effectively being ignored. This means that multiple
540: threads were able to access code which was not thread safe and could lead to
541: a crash of the Wrapper. This is a problem that has been in the code since
542: the first z/OS release and is not known to have actually caused any problems.
543: Starting with 3.5.1, this was only an issue if debug output was enabled.
544: Versions 3.3.9 through 3.5.0 could have also had problems whenever the
545: Wrapper received a system signal.
546:
547: 3.5.5
548: * Add new wrapper.filter.trigger.<n> action, "SUCCESS". If this gets triggered
549: then the Wrapper will treat the current JVM invocation as a success, and
550: reset its internal failed invocation counter. This is useful for
551: applications that need to be restarted frequently.
552: * (Standard, Professional) Ignore Juniper Network Connect hostIds as they
553: change on each reboot and are thus unreliable as hostIds.
554: * Added a PASS_THROUGH setting to the UNIX shell script and Windows
555: AppCommand.bat.in files which tells them to pass any extra arguments directly
556: on to the JVM when it is launched.
557: * Added a FIXED_COMMAND setting to the UNIX shell script and Windows
558: AppCommand.bat.in files to make it possible to run either without specifying
559: a command. Mainly useful in conjunction with PASS_THROUGH.
560: * (Standard, Professional) Added a --passthrough option to the exe
561: customization, in order to tell the wrapper to precede the whole command line
562: through to the application in the JVM.
563: * (Standard, Professional) Added a --conf option to change the default conf
564: file, the wrapper tries opening when no conf file was explicitly specified.
565: * Added wrapper.ntservice.account.prompt. If set to TRUE the wrapper will
566: prompt for all account details (domain, account name, password).
567: * Fix a minor issue in #include file declarations where a leading space was not
568: required.
569: * Add a new #include.required directive which works the same as the #include
570: directive except that it will output an error and prevent the loading of the
571: configuration if the included file does not exist. Normally include files
572: are optional by design.
573: * Modify the error messages displayed when configuration files fail to load so
574: they now provide more information about where specifically the problem was.
575: * Disabled the forced reloading of the SYSTEM (and if set to a specific
576: account, the user) registry before launching the Wrapper as a service on
577: Windows. This was done originally in Windows NT because changes to the
578: configured environment were not being reflected when running a service unless
579: the system was first rebooted. Microsoft appears to have solved this problem
580: in Windows XP and 2003. In Windows 7 and 2008, this was actually causing a
581: problem because the SYSTEM registry contains a setting "USERNAME=SYSTEM" by
582: default that was overwriting the USERNAME when run as specific user. It was
583: decided to disable this registry loading for Windows versions starting with
584: XP and 2003. Of the supported versions, only 2000 is now reloading its
585: environment. The only difference from version 3.5.4 and earlier that could
586: be found is that when running as the SYSTEM user on Windows 7 or 2008, the
587: USERNAME environment variable will now be set to the host name followed by a
588: dollar sign rather than SYSTEM. This is actually how all other services
589: work. But just in case this is a problem, it can we resolved by adding a
590: "set.USERNAME=SYSTEM" property into the Wrapper configuration file.
591: Bug #3061490.
592: * (Standard, Professional) Fix a problem for Solaris and HP-UX where the socket
593: timeout properties for the email notifications were ignored.
594: * (Standard, Professional) Added wrapper.ntservice.recovery.<x> properties to
595: define system level actions in the event that the Wrapper process itself
596: has a failure.
597: * (Standard, Professional) Fixed a problem in the WrapperProcess.waitFor() and
598: WrapperProcess.exitValue() call, where it would fail to return when called
599: after the Wrapper had initiated the shutdown of the JVM.
600: * (Standard, Professional) Add WrapperProcessConfig.setSoftShutdownTimeout(int)
601: method to tell the Wrapper how long to wait after nicely asking the child
602: process to shutdown cleanly when calling WrapperProcess.destroy(). Once the
603: timeout has ellapsed, the child process will be forcibly terminated. This
604: timeout had been hard coded to 5 seconds in earlier versions.
605: * Add more detailed usage output to the UNIX shell script.
606: * Make it possible to 'pause' and 'resume' the JVM from the UNIX shell and
607: Windows batch scripts.
608: * (Professional) Fix a minor memory memory leak while initializing timers.
609: * Fix a memory leak which could happen if there were any invalid strings in
610: localization resources.
611: * (Professional) Fix a bug where the wrapper.event.<event_type>.command.argv.<n>
612: properties were not correctly parsed on Windows. This issue was introduced
613: in version 3.5.0.
614: * (Professional) Add the ability to define wrapper.event.default.command.argv.<n>
615: properties that will be used if the event specific specific commands are not
616: defined. Mainly useful for testing.
617: * Fix a problem occuring when the wrapper failed to roll the log file causing
618: to write to the wrapper's default log (wrapper.log) file rather than
619: continuing to write to the current logfile.
620: * (Standard, Professional) Fix a put problem in the internal hash map
621: implemenation used for localization where values could be lost. This was
622: not a visible issue because of the data used.
623: * Add new wrapper.filter.allow_wildcards.<n> property and make it possible to
624: specify wrapper.filter.trigger.<n> patterns which contain '*' and '?'
625: wildcards.
626: * Add a commented alternative in the default OutOfMemoryError filter
627: configuration to make it more specific to only trigger on uncaught exception
628: stack traces. This is to avoid output like that from the
629: -XX:+PrintClassHistogram JVM argument from causing the JVM to restart with a
630: false out of memory warning. See the wrapper.filter.trigger.<n>
631: OutOfMemoryError example for more details.
632: * Localize the default filter message.
633: * Added ISO-8859-* encoding support and a few other encodings.
634: * (Standard, Professional) Fix a problem on UNIX versions, parsing dates in
635: license keys that was introduced in version 3.5.0. Windows verisons did not
636: have this problem. All license upgrade terms and lease terms which contained
637: "08" or "09" as either a month or day were being parsed incorrectly. This
638: was leading the Wrapper to interpret those date components as "00". If the
639: number was the date, then this would cause the date to be set to the last day
640: of the previous month. If it was the month however, it would cause the date
641: to be set to December of the previous year. For example "2010-08-20" was
642: being interpreted as "2009-12-20", and "2010-10-08" was being interpreted as
643: "2009-09-30". This would have prevented some licenses from being able to
644: start because the upgrade terms were in effect prior to the Wrapper's release
645: date. Some trial licenses could also have stopped early because their lease
646: term end was earlier that it should may have been. For normal licenses, his
647: will have no effect on installations once they are up and running because
648: they do not use the lease term.
649: * Fix a problem on Windows when a service received several service control
650: codes in rapid succession. Since version 3.5.1, the Wrapper was only to
651: process a single control code in each cycle of its main loop. This was
652: resulting in messages like "Previous control code (4) was still in queue,
653: overwriting with (4)." in the logs. The Wrapper can now handle up to 25
654: control codes per 10ms cycle.
655: * Fix a problem where it was not possible to send passthrough arguments to the
656: JVM when installing or updating a Windows Service. Passthrough using the
657: "--" argument was added in 3.5.2.
658: * Add a new wrapper.pause_on_startup property which makes it possible to tell
659: the Wrapper to go directly into a paused state without ever launching a JVM.
660: * Fix a problem where the STOP command set in a command file was being ignored
661: if the Wrapper was currently in a paused state.
662: * Make it possible to specify DEFAULT for the configuration file encoding.
663: This will cause the file to be loaded using the default system encoding. We
664: added this by request, but recommend using a portable encoding like UTF-8 to
665: ensure that the configuration file will load correctly on all systems.
666: * Added a WRAPPER_LANG environment variable which makes it possible to reference
667: the current locale language code in the configuration file. One common use
668: is to do localization using inclues.
669: (e.g. #include ../conf/wrapper-%WRAPPER_LANG%.conf)
670:
671: 3.5.4
672: * Add optional support for custom public static methods in the
673: WrapperSimpleApp and WrapperStartStopApp helper classes. Feature Request
674: #2812276.
675: * Add a new special configuration file directive "#properties.debug" which
676: enables debug output about the properties as they are loaded by the
677: configuration file. This can be useful to tell if and why certain properties
678: are being overwritten. Feature Request #3042959.
679: * Fix a minor problem where the "#include.debug" configuration file directive
680: was sticky so it would be enabled when the configuration file was reloaded
681: even if the reloaded configuration file no longer had the directive set.
682: This was only an issue if the wrapper.restart.reload_configuration property
683: was set.
684: * Messages about missing included configuration files that were output when the
685: #include.debug" configuration file directive was active were being logged at
686: the ERROR level even though they were not problems.
687: * Fix a minor problem where the WRAPPER_JAVA_HOME environment variable was not
688: correctly being set to final when it was set internally by Wrapper. This
689: could lead to unexected results if the user overwrote it later in their
690: configuration file.
691: * Fix a problem on AIX and z/OS, when running the Wrapper without any
692: arguments. The Wrapper was attempting to use the default wrapper.conf file
693: but the check for the file was failing causing the Wrapper to continue even
694: though the file did not exist. This caused a confusing error message to be
695: displayed, but was otherwise harmless.
696: * Clean up some debug code associated with sleeping where log output was being
697: queued when it did not need to be.
698: * (Standard, Professional) Consolidate some redundant code associated with
699: waiting for interfaces on startup.
700: * (Professional) Fix a problem in the email feature of the Wrapper where a
701: subject of more than 27 bytes in length when encoded as UTF-8. This was
702: caused by a miscalculation in the Base64 conversion of the subject.
703: * (Professional) Fix a problem when the WrapperManager.exec method which takes
704: an array of command elements was called on Windows. The command elements
705: need to be combined into a single command line, but if any of the elements
706: contained spaces, the resulting command line was not being correctly quoted.
707: * Add a new wrapper.java.command.resolve property to control whether or not the
708: Wrapper tries to resolve any symbolic links in the Java command, specified
709: with the wrapper.java.command property. Historically, it has always done so,
710: but some jvm started applications like run-java-tool on Gentoo will fail if
711: it is run directly as they have a check to make sure it is launched via a
712: symbolic link.
713: * Fix a problem on Windows versions where a path to the Wrapper binary,
714: including the Wrapper binary itself, which was more than 100 characters would
715: cause a buffer overflow when installing the service. A second similar
716: problem would happen if the same path was more than 128 characters, whenever
717: the Wrapper was launched. These were both very old issues and only happened
718: on 32-bit versions of Windows XP and 2000. Microsoft documentation says that
719: the issue should also exist on the 64-bit versions, but we were unable to
720: reproduce it there. Newer versions of Windows are all fine.
721:
722: 3.5.3
723: * Fix a typo in the UNIX shell scripts that was causing "command not found"
724: errors to be shown when running the Community Edition.
725: * Add new wrapper.console.fatal_to_stderr, wrapper.console.error_to_stderr,
726: and wrapper.console.warn_to_stderr properties to control whether the output
727: at the FATAL, ERROR, and WARN log levels go to stdout or stderr. In the past
728: they all went to stdout. With this change, FATAL and ERROR log levels now
729: default to stderr output.
730: * Fix a problem where the shell script would produce unexpected results if the
731: Standard or Professional Edition shell scripts were used with the Community
732: Edition Wrapper. Fix was in Wrapper binary by changing the default ERROR and
733: FATAL log level console output to stderr rather than stdout.
734: * (Standard, Professional) Fix a problem where script error message output was
735: not being shown if the wrapper.conf file specified in the script did not
736: exist.
737: * Fix a problem where errors from failed forks on Windows were always being
738: flushed immediately rather than honoring the value of the
739: wrapper.console.flush property.
740: * Fix a problem on Windows 2000 systems where a new feature added in 3.5.2 was
741: preventing the Wrapper from running because the API used was too new.
742: * Change the font of the wrapperw dialog in order to have prettier output of
743: multibyte characters.
744: * Add a line feed after the first message when starting the Wrapper from the
745: UNIX script.
746: * Add a note in the debug output so the configured java temporary directory is
747: always logged to help with debugging.
748: * Add a workaround for a bug in both Sun and IBM JVMs which cause an invalid
749: exception to be thrown when a socket is already bound. It had been causing
750: the Wrapper to report: "Unexpected exception opening backend socket:
751: java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind":
752: http://bugs.sun.com/view_bug.do?bug_id=6965962
753: * Add the encoding of the subjects in the event mails to be always UTF-8
754: Base-64 encoded.
755: * Add new wrapper.event.<x>.email.smtp.auth.type,
756: wrapper.event.<x>.email.smtp.auth.userid, and
757: wrapper.event.<x>.email.smtp.auth.password properties which make it possible
758: to do LOGIN and PLAIN connection authorizations. Currently SSL (STARTTLS)
759: connections to the mail are server are not yet supported.
760: * Fix a buffer overflow while loading the configuration file on Mac OSX
761: versions. Introduced in 3.5.0.
762: * Fix a several memory leaks on UNIX versions that were added in 3.5.0, as well
763: as a few others on all platforms, some from quite early versions.
764: * Fix some places where a resolved path of exactly MAX_PATH characters in
765: length could have resulted in a buffer overflow.
766: * (Standard, Professional) Fix a memory leak disposing language packs.
767: * Go through and increase the consistency of text strings.
768: * Fix a problem on HP-UX where the Wrapper was logging a warning that the
769: configured JVM was invalid if it was a PA-RISC 2.0 binary. Bug #3037317.
770: * Fix a problem where the WrapperManager was failing to trap and hide errors
771: initializing the MBean server on some JVMs that did not support it.
772:
773: 3.5.2
774: * Added new command line argument "--" . All arguments following will be
775: preceded and passed to the java application. The arguments are attached after
776: the arguments used in wrapper.app.parameter.<n>
777: * Fixed a problem in the shell script which could lead to report failed starts
778: of a daemon incorrectly on the command line.
779: * Implemented some small logic in the wrapper script which tries to change the
780: permissions of the wrapper binary to executable if it wasn't set.
781: * The Demo Application had problems locating the right conf file on Unix
782: platforms and failed to launch the internal demonstration wrapper process.
783: * Improved the error message logged if the Windows version of the Wrapper exits
784: with an internal error. It now logs more information about the internal
785: state of the Wrapper as well as saving a mini dump file which can be sent to
786: support to make it easier to diagnose the cause of the problem.
787: * Fix a problem where the names and displayNames in WrapperWin32Service
788: instances were corrupted. List affected the WrapperManager.listServices()
789: and WrapperManager.sendServiceControlCode() methods. There was a similar
790: problem with the WrapperManger.getUser(), WrapperManager.getInteractiveUser()
791: and WrapperManager.setConsoleTitle() methods. Introduced in 3.5.0.
792: * Fix a problem on Windows where wildcards would sometimes fail to be resolved
793: or cause the Wrapper to crash. This affected the generation of classpaths
794: and logfile rolling. Introduced in 3.5.0.
795: * Fix a problem on UNIX platforms where some error messages related to a failed
796: fork to launch the JVM were not being logged correctly. Introduced in 3.5.0.
797: * Fix a problem where invalid characters in configuration files that did not
798: declare an encoding could cause the Wrapper to crash on startup. This could
799: be issue for users upgrading from versions prior to 3.5.0 as older versions
800: did not do any character set translations and would not have had a problem.
801: * Fix a problem in code to check whether a drive was a mapped network drive or
802: not was failing. This would sometimes lead to a false warning that the drive
803: could not be identified. Introduced in 3.5.0.
804:
805: 3.5.1
806: * Start using a system function to determine whether or not a character in the
807: configuration file is a control character or not. This way it works on
808: non-ASCII platforms.
809: * (Standard, Professional) Fix a crash on Windows platforms caused by freeing
810: up unallocated memory while loading the Wrapper's configuration.
811: * Add debug output describing the system and current code pages on Windows
812: versions to help understand encoding and mojibake issues.
813: * Add a Japanese localized src/conf/wrapper.conf.in_ja template configuration
814: file to assist Japanese users.
815: * Fix an potential deadlock on UNIX platforms if the JVM exits while logging
816: is taking place and the wrapper.debug or undocumented wrapper.state_output
817: properties were set to TRUE.
818: * Fix a problem where a failed JVM invocation that happened immediately after
819: being launched would cause the Wrapper to immediately give up and shutdown.
820: This should not have been possible with normal JVM configurations, but was
821: turned up in testing.
822: * Fix a problem where some startup output of the tick timer debug output was
823: corrupted. This was only an issue if the wrapper.tick_output property was
824: set.
825: * (Standard, Professional) Rework the way text is localized so that mallocs
826: are all handled on initialization. 3.5.0 had problems with occassional
827: freezes and crashes caused by mallocs being made within signal handlers.
828: The problems were rare unless debug output was enabled.
829: * Greatly simplify signal handlers on all platforms so they now do as little
830: as possible, actions are now queued and then processed by the main thread.
831: * (Standard, Professional) Fix a problem where the hostname in the
832: wrapper.syslog.remote.host couldn't resolve a hostname (IP Address was
833: working).
834: * (Standard, Professional) Add debug output on Windows versions to help debug
835: localization and code page issues.
836: * (Standard, Professional) Fix a localization problem on Windows where the
837: Wrapper was using the system-wide language rather than that of the current
838: process. This was resulting in mojibake if the Wrapper was launched in a
839: new console if that new console did not support the required code page.
840: This was only an issue if the user had changed the active code page from the
841: default for their Windows desktop.
842: * Fix a problem on Windows platforms where the JVM child output was being
843: logged with an extra line feed in some cases.
844: * Fix a problem running the DemoApp from some Network shares on Windows.
845: * Add a new WrapperManager.isWindows() and WrapperManager.isMacOSX() methods to
846: make it easy to write such conditional code as both platforms can require non
847: standard code.
848: * (Standard, Professional) Make the GetHostId.bat file more robust so it can be
849: executed using a relative reference from the command line. It also now
850: supports Delta-pack style Wrapper binary naming and falling back to use which
851: binaries are available.
852: * Change the timing of when the wrapper.working.dir is set so that any error
853: messages generated while loading the configuration will be logged to the
854: correct log file. It is also needed for Standard and Professional Editions
855: to ensure that the language pack is loaded from the correct location so that
856: all such messages will be in the correct locale.
857: * Fix a problem on UNIX platforms where the status command was failing with an
858: error due to the localization feature added in 3.5.0.
859:
860: 3.5.0
861: * (Standard) Added the ability to detect and react to thread dead locks in
862: the JVM. Requires at Java 1.5. Added wrapper.check.deadlock,
863: wrapper.check.deadlock.interval, wrapper.check.deadlock.action, and
864: wrapper.check.deadlock.output properties to configure the detection.
865: * (Professional) Add a new jvm_deadlock event which is fired in response to
866: a thread deadlock being detected within the JVM.
867: * Fix a problem where the intervals like wrapper.ping.interval were all
868: rounding down causing them to function at a rate one second shorter than
869: configured.
870: * Fix a minor memory leak calling WrapperManager.exec.
871: * Add a new wrapper.filter.message.<n> property which can be used to control
872: the message which is logged when a wrapper.filter.trigger.<n> is matched.
873: * Rework the way actions are fired for the wrapper.filter.<n>.action and
874: wrapper.timer.<n>.action properties so there is no longer any duplicate
875: code.
876: * Modify the way the wrapper.filter.<n>.action and wrapper.timer.<n>.action
877: properties work so it is now possible to specify a list of actions which will
878: happen in the order specified. This makes it possible to do a thread dump
879: and then restart in response to an error.
880: * Add the DEBUG action to the wrapper.filter.<n>.action property for
881: consistency.
882: * (Professional) Implement the ability to fire user defined events as actions
883: of the wrapper.filter.<n>.action, wrapper.timer.<n>.action, and
884: wrapper.check.deadlock.action properties.
885: * Fix a problem in the WrapperProcess.destroy() function, when a child process
886: couldn't have been forcibly killed.
887: * Add GetHosdID.bat file for Windows platforms. This file will open a dialog
888: displaying the HostId of the machine.
889: * Fix a problem in the shell script which, on a rc based OS, could lead to
890: problems starting the Wrapper when the APP_NAME in the script contained
891: capital letters.
892: * (Standard, Professional) Added a set of wrapper.share.<n>.* properties which
893: makes it possible to configure the Wrapper to map specific network resources
894: before launching the JVM on Windows.
895: * Corrected the way the Wrapper is installing itself as a Windows service when
896: the binary and/or conf file are located on a Mapped Drive.
897: * Add new wrapper.pausable and wrapper.pausable.stop_jvm properties to control
898: whether the JVM can be paused or not, and deprecate the use of the Windows
899: specific wrapper.ntservice.pausable and wrapper.ntservice.pausable.stop_jvm
900: properties.
901: * Modified the wrapper.commandfile property so PAUSE and RESUME commands are
902: now supported on all platforms at any time.
903: * Modified the wrapper.filter.action.<n> property so PAUSE, RESUME, and DEBUG
904: actions are now supported.
905: * (Professional) Modified the wrapper.timer.<n>.action property so PAUSE and
906: RESUME actions are now supported.
907: * (Professional) Modified the wrapper.event.<event_name>.command.block.action
908: property so PAUSE and RESUME actions are now supported.
909: * Added new WrapperServicePauseEvent and WrapperServiceResumeEvent classes to
910: make it possible to notify an application that it has been paused or resumed.
911: To date, this was only possible when the Windows service was paused or
912: resumed
913: * (Professional) Add new "wrapper_pause" and "wrapper_resume" event types that
914: are fired whenever the Wrapper is paused or resumed.
915: * Enhance the command line parsing for the WrapperManager.exec() command. The
916: single commandLine version of the exec call will handle quotes more
917: sophisticated.
918: * Modified the wrapper.syslog.ident property so its value is now silently
919: trimmed to 32 characters in length. This is needed to avoid problems with
920: syslog servers. (See RFC 3164 section 4.1.3)
921: * (Standard, Professional) Add new wrapper.syslog.remote.host,
922: wrapper.syslog.remote.port, and wrapper.syslog.local.host properties which
923: can be used to redirect all syslog (UNIX) or Event Log (Windows) output to
924: a remote syslog server.
925: * Add support for the wrapper.syslog.facility property on Windows so remote
926: syslog entries can be sent from Windows versions of the Wrapper.
927: * Add debug output from the WrapperManager class which shows information about
928: the current wrapper.jar, including its size, location, and MD5 hash.
929: * Add a check for wrapper.java.classpath.<n> entries containing quotes. The
930: quotes are now stripped and a debug warning logged.
931: * (Standard, Professional) Increase the size of the wrapperw.exe error dialog
932: so it is a little easier to read. Also changed the font for the same reason.
933: * (Standard, Professional) Modify the title of the wrapperw.exe error dialog
934: so it now includes the value of the wrapper.displayname property.
935: * Add a new check for the writability of the configured Java temporary
936: directory. When running on Vista, it will not be writable and can lead to
937: errors.
938: * Added new wrapper.java.tmpdir.required and wrapper.java.tmpdir.warn_silently
939: properties to control whether the temporary directory is required.
940: * Add a note in Wrapper conf template showing users how to configure a specific
941: Java version to use.
942: * Add a new CLOSE_SOCKET command to the wrapper.commandfile property and added
943: a new wrapper.commandfile.enable_tests property to control whether it can be
944: used.
945: * Fix a debug warning while shutting down caused by one thread closing the
946: backend socket when another expected it to be open.
947: * If the backend socket between the JVM and Wrapper is somehow closed, make the
948: JVM respond promptly by restarting the JVM immediately to resync with the
949: Wrapper. Added log information to make it clear when this happens.
950: * Add a new wrapper.use_tick_mutex property to control whether or not the
951: internal tick timer is protected by a mutex. (Experimental)
952: * (Standard, Professional) Add support for zLinux 32 and 64-bit on s390 and
953: s390x systems.
954: * Change the internal encoding of the wrapper from native characters to
955: UNICODE. This will allow the wrapper to handle correctly any characters in
956: its configuration file and internally.
957: * (Standard, Professional) Implement a new WrapperResources class which makes
958: it possible for user applications to localize their applications using the
959: same methods common to native applications. The Wrapper uses this internally
960: to provide localized versions of the Wrapper.
961: * Remove the old org.tanukisoftware.wrapper.resources package as it is no
962: longer being used.
963: * (Standard, Professional) Add Japanese language pack to localize the Wrapper
964: to Japanese.
965: * Fix a problem in the WrapperManager class where unexpected exceptions thrown
966: in the main socket loop were being thrown away without being logged.
967: * Make the Wrapper more robust against failures removing the Wrapper's shutdown
968: hook on shutdown. It had been causing the clean shutdown of the JVM to fail
969: as an unexpected exit.
970: * Fixed a problem in the wrapper customize code where customized multi layer
971: icons may get scaled incorrectly by Windows. Bug #3015848
972: * Modify the wrapper.on_exit.<n> property so it is now possible to PAUSE the
973: Wrapper when a JVM exits. This delays the restart of the JVM until the
974: Wrapper is resumed.
975: * Add a new log format, 'U', which logs the approximate time in seconds since
976: the Wrapper was launched. It is based on the internal tick timer and will
977: be a few percent lower than the actual number of seconds that have elapsed.
978: Added to the wrapper.console.format, wrapper.logfile.format, and
979: wrapper.logdialog.format properties.
980: * Fix a problem where deleting the configured anchor file was not recognized
981: if the JVM was not running at the time. The Wrapper was not noticing that
982: it was missing until the next JVM was launched.
983: * (Standard, Professional) Add a new NOTICE log level which is used to log
984: license related message. These will only show up trial license log output.
985: * (Standard, Professional) Add a new default 15 minute trial license which
986: can be used out of the box on any machine without the need to register and
987: obtain a trial license or purchase a license.
988: * Add a new wrapper.environment.dump property which will dump all of the
989: environment variables to the log, along with where the variables originated.
990: * Force the Wrapper to flush all logfile output for each line until the
991: configuration file has been loaded. There is normally no output up to this
992: point anyway, but this ensures that any errors are logged in a consistent
993: location.
994: * Move the registration of the main thread with the logging system up a bit
995: to make it possible to perform low level debug logging earlier.
996: * Add a set of checks to display an error and prevent the Wrapper from starting
997: if the batch or shell scripts being used are based on the TestWrapper demo
998: application. It is important that the user start with the default template
999: files in the distribution src/bin and src/conf directories to make sure the
1000: integration goes smoothly.
1001:
1002: 3.4.1
1003: * Fix a problem where the wrapper.app.parameter.1 property was always being
1004: set to an empty string when launched from launchd on Mac OSX. It worked
1005: correctly with the testwrapper application, but would fail for most user
1006: applications.
1007: * (Professional) Fix a potential synchronization problem in the log output
1008: of the tick timer, event command and event email code. This had been in
1009: the code since 3.3.0 without any reports of problems.
1010: * Improve the error message displayed when the configured wrapper.java.command
1011: can not be found on the path.
1012: * Log the name of the signal in the logs when a SIGSEGV is detected from the
1013: JVM. It had been logged as Unknown.
1014: * Add some comments to the wrapper.conf.in template to help users get started
1015: with a new license key file.
1016: * Add some default properties to the wrapper.conf.in template file to make
1017: it easier to get up and running with out of memory checks, as well as
1018: sending out alert emails.
1019: * Add a small debug message when running wrapperw.exe so it is clear which
1020: wrapper binary is being used.
1021: * Fix a problem where the wrapper.logfile.maxfiles was not being applied on
1022: startup when the current log file did not yet exist. This was true for any
1023: wrapper.logfile value which contained a unique value like a PID.
1024: * (Professional) Fix a problem in the WrapperProcess.destroy() function, where
1025: the function was failing to forcibly kill the child process.
1026: * (Standard, Professional) Add a new GetHostID.bat file for Windows platforms.
1027: This file will open a dialog displaying the HostId of the machine to help
1028: new users get up and running.
1029: * Add a new WrapperManager.appearOrphan() method which can be used to test
1030: how the WrapperManager shuts down the JVM in the event that the Wrapper
1031: process ever crashes or freezes. This was not due to any particular problem
1032: and was added to fill out our test coverage.
1033: * (Professional) Fix a problem where event commands were being left in a
1034: defunct state after execution on UNIX platforms.
1035: * Fix a potential problem on 64-bit versions where the internal tick timer was
1036: not rolling over in the same way as the 32-bit versions. This has been in all
1037: previous versions but is not known to have caused any problems. It was fixed
1038: for consistency.
1039: * Modify the WrapperManager class so it will now request a JVM hard exit only
1040: after 4-times the ping timeout, in seconds, since the last contact with the
1041: JVM. This had been 90 seconds more than the ping timeout, which was not
1042: always long enough when the wrapper.ping.timeout was very large.
1043: * Shift the initial start point of the tick counter so it will roll over 50
1044: seconds after startup. This shouldn't be noticeable to the user, but makes
1045: sure that this roll over is much better tested as it always happens the first
1046: time on startup.
1047: * Add a new wrapper.java.classpath.use_environment property which makes it
1048: possible to set the classpath using the CLASSPATH environment variable rather
1049: than including it on the Java command line.
1050: * Fix a problem where requests to shutdown the Wrapper when in the state where
1051: it was just about to launch a JVM would being ignored. This was fixed in all
1052: editions, but was only an issue in the Professional Edition when the
1053: wrapper.event.jvm_prelaunch.command.on_exit.<n>=SHUTDOWN property was being
1054: used with the wrapper.event.jvm_prelaunch.command.block=TRUE property and the
1055: command exited with a code that triggered the SHUTDOWN.
1056: * (Professional) Add a new wrapper.event.<event_type>.command.block.action
1057: property to control how the Wrapper behaves when a command does not complete
1058: execution within the configured timeout. Accepted values are CONTINUE, KILL,
1059: KILL_SHUTDOWN and KILL_RESTART. Default value is CONTINUE.
1060: * (Professional) Made it possible to use the "default" event type with the
1061: wrapper.event.<event_type>.command.loglevel,
1062: wrapper.event.<event_type>.command.block,
1063: wrapper.event.<event_type>.command.block.timeout,
1064: wrapper.event.<event_type>.command.on_exit.<n>, and
1065: wrapper.event.<event_type>.command.on_exit.default properties.
1066: * Fixed a single byte buffer overflow which takes place just before the JVM is
1067: launched on Windows platforms. This was introduced in 3.4.0.
1068: * Add a message pointing the user to the Wrapper's log file when the service
1069: fails to start after it has been launched.
1070: * Update the debug message displayed when attempting to open the backend socket
1071: if the port is unavailable so it doesn't seem like a problem. It will retry
1072: with another port.
1073: * Work around an issue on some Solaris problems where the shell script would fail
1074: if /usr/ucb/ps wasn't installed.
1075: * Fix a problem on UNIX versions where the Wrapper would fail to resolve the
1076: correct location of java if it was located using the system PATH, and that PATH
1077: element pointed to a binary via a relative symbolic link. This was introduced
1078: in 3.4.0.
1079:
1080: 3.4.0
1081: * Increased the minimum supported Java version from 1.2 to 1.4.
1082: * Removed the reflection code used to manage the Wrapper's shutdown hook.
1083: The Runtime methods are now called normally.
1084: * Add a note in the TestWrapper shell script to make it clear that the user
1085: should always use the scripts in the WRAPPER_HOME/src/bin/ directory when
1086: generating scripts for their own applications. This became more of an
1087: issue because of changes to the TestWrapper script starting with 3.3.8.
1088: Bug #2902843.
1089: * (Professional) Added new WrapperManager.exec methods and a new
1090: WrapperProcess class to allow the launching and management of child
1091: processes through the Wrapper rather than using the standard Runtime
1092: class. This makes it possible to clean up child processes when the
1093: JVM crashes or is restarted, as well as solves severe memory issues with
1094: the way processes are forked on some UNIX platforms.
1095: * (Professional) Added a new wrapper.child.status.loglevel property to make
1096: it easier to debug the status of child processes.
1097: * (Professional) Added a new wrapper.child.count.interval property to control
1098: the interval at which the number of waiting child processes is logged after
1099: a JVM is shutdown.
1100: * (Professional) Added a new wrapper.jvm_cleanup.timeout property to control
1101: the amount of time that managed child processes still running after the JVM
1102: has exited are given to shutdown before being forcibly killed.
1103: * Fix a problem with WrapperManager.getUser() and getInteractiveUser() methods
1104: which was preventing us from using the latest compiler on 32-bit Windows.
1105: (The compiler used to build 32-bit Windows versions was rolled back to the
1106: version used through the 3.3.5 release in 3.3.9 to work around the problem
1107: that was causing these methods to always return null.) The change in this
1108: version should not affect how the Wrapper functions.
1109: * The old compiler used in 3.3.9 for Windows 32-bit builds was causing a false
1110: hit on Symantec security software. The new compiler causes the Wrapper to
1111: once again pass without any warnings.
1112: * Added a warning while starting up the JVM which will be displayed if the
1113: Java command in wrapper.java.command does not point to a valid java binary
1114: file.
1115: * [Changed the scripts and batch files to try to load the wrapper executable
1116: according to the system, i.e. on 64-bit systems the 64bit binary of the
1117: wrapper is attempted to be executed first and after this fails the 32 bit
1118: gets attempted to be loaded. This behaviour is primaly useful with the
1119: delta-pack of the wrapper.]
1120: * Add some debug output logging the current timezone to assist supporting
1121: time related problems.
1122: * (Standard, Professional) Added a new wrapper.license.debug property which
1123: will log information about the license key(s) being tested on startup.
1124: * (Standard, Professional) Fix a problem where license validation was
1125: failing at certain times of the day for servers with timezones east of
1126: Japan. Development license keys which have their update times obfuscated
1127: were not affected. This was a problem introduced in 3.3.7.
1128: * Fixed a bug in the wrapper shell script which occured when running the script
1129: on a Solaris within a non singlebyte locale. Bug #2910327
1130: * Fixed a potential bug in the wrapper script where requesting a Thread Dump,
1131: the shell is sending the wrapper console to the background and returning
1132: with a prompt.
1133: * Fix a problem where Java log output would sometimes get extra line feeds
1134: when under heavy load.
1135: * Fix a problem which was leading to a resource not found error when trying
1136: to start a service, if it was installed on a Mapped Network Drive under
1137: Windows.
1138: * Added some advice messages recommending the use of UNC paths if a resource
1139: located on a Mapped Network Drive is used in the configuration file on
1140: Windows versions.
1141: * (Standard, Professional) Fix a bug in the wrapper binary customization,
1142: which occured when the source binary file was set to read only.
1143: * Fixed a null string problem in the error message if a classpath value
1144: wasn't found.
1145: * (Professional) Added the option to include a logfile into the wrapper's
1146: EmailNotification mails via wrapper.event.default.attach_log=TRUE
1147: * Improve the message displayed when a user calls
1148: WrapperManager.requestThreadDump() in JVM which does not have console
1149: window on Windows. This should never be an issue when run with the Wrapper,
1150: but can happen if running standalone without the wrapper binary.
1151: * Update the Windows batch scripts so they now take AMD64 and IA64
1152: architectures into account when deciding which version of the Wrapper to
1153: run when using the delta pack.
1154: * Update the UNIX shell script so it now does a much better job of resolving
1155: the ideal platform bits to run the correct version of the Wrapper when using
1156: the delta pack. Thanks to Leo Leung for the patch.
1157: * Add install and remove commands to the UNIX shell script so it is now much
1158: easier to install and remove the Wrapper on many UNIX plattforms to start
1159: and stop on system startup and shutdown. Thanks to Leo Leung for the patch.
1160: * Update the Windows batch scripts so it is now easier to change the location
1161: of the Wrapper configuration file or rename the Wrapper binary when using
1162: the scripts.
1163: * Added a new QueryApp-NT.bat.in template script which can be used to query
1164: the current running status of the service on Windows.
1165: * (Standard, Professional) Add a new "-u" or "--update" command to the Wrapper
1166: which allows you to effectively reinstall the Wrapper as a service without
1167: having to provide the account credentials if the service is running as a
1168: specific user. This is very useful for installers upgrading an application
1169: to a new version.
1170: * Add a new "update" command to the Windows AppCommand.bat.in batch script.
1171: * Go through and clean up the messages displayed when controlling the Wrapper
1172: as a service so the messages are consistent and more meaningful to the user.
1173: * Add wrapper.wait_for_hostid and wrapper.max_hostid_timeout property.
1174: This properties set if and how long the wrapper shall wait when starting up
1175: until the hostid is available. This is important to make sure that server
1176: licenses are validated correctly on UNIX platforms as the OS is booting up.
1177: * (Professional) Fix a problem where environment variables referenced in
1178: property values were not being expanded correctly the first time they were
1179: referenced if the property's value was a default value. The underlying fix
1180: was in all editions, but this was only causing a problem in the Professional
1181: Edition where the WRAPPER_HOSTNAME variable was not being expanded in the
1182: subject and body of emails sent out for the "wrapper_start" event if the
1183: defaults were used.
1184: * (Professional) Fix a problem where backslashes in the body of emails,
1185: configured with the wrapper.event.<event_name>.email.body property, were
1186: not being handled correctly when displaying things like paths from
1187: environment variable references.
1188: * Fix a problem on UNIX platforms where the Wrapper was displaying an error
1189: about not being able to locate the configuration file when the Wrapper was
1190: run without any arguments.
1191: * (Standard, Professional) Improve the message shown when a License Key is not
1192: found.
1193: * Add a new message to the Community Edition when the user requests a HostId.
1194: * Add WAIT_FOR_STARTED_STATUS and WAIT_FOR_STARTED_TIMEOUT to the script. This
1195: lets the script wait (up to timeout sec.) when starting a daemonized process
1196: until the process has been started.
1197: Thanks to Dobes V. Feature Requests #2917391.
1198: * Improve the error message displayed when the user tries to run the Wrapper
1199: with the internal -s or --service commands.
1200: * Fix a problem where the WrapperSystemPropertyUtil.getBooleanValue() method
1201: was not correctly returning the specified default value when the looked up
1202: property was missing. Also added a new getStringValue() method.
1203: * Improve the error message displayed when the user tries to install and remove
1204: the wrapper as Service on Windows Versions after Windows Vista.
1205: * Add an advice message when MacOSX applications launched with launchd
1206: encounter a "Returning nil _server" error when displaying a GUI.
1207:
1208: 3.3.9
1209: * Modify the way JNI functions are called from within the native library so
1210: they work correctly on platforms which are not ASCII based.
1211: * (Professional) Add support for IBM z/OS 390 servers. This is still an alpha
1212: release and will be made available on request.
1213: * Improve the message displayed when a server license key is used on a
1214: different server.
1215: * Add a minimum max file size of 1024 bytes to the wrapper.logfile.maxsize
1216: property to avoid the log file rotating too often if the user enters a
1217: very small value.
1218: * Add a message that shows up in the console when the Wrapper fails to write
1219: to the configured log file. As with previous versions, it will then fall
1220: back to writing to wrapper.log in the current working directory.
1221: * On UNIX platforms, automatically set the wrapper.disable_console_input
1222: property when wrapper.daemonize is set.
1223: * Fix a problem introduced in 3.3.8 where relative configuration file includes
1224: were failing to resolve correctly when the wrapper.working.dir and
1225: wrapper.daemonize properties were used together. The wrapper.daemonize
1226: property causes the configuration to be loaded twice on startup and the
1227: working directly was not being reset correctly before it was loaded the
1228: second time.
1229: * Fix a problem introduced in 3.3.8 where wildcard selection of files on
1230: Windows failed in some cases.
1231: * Fix a problem introduced in 3.3.8 where setting the wrapper.logfile.maxfiles
1232: property to 0 was causing all log files to be deleted rather than none when
1233: the ROLLNUM file pattern was used.
1234: * Revert the way rolled log files are deleted when using the ROLLNUM file
1235: pattern to the functionality used in versions 3.3.7 and earlier. Files such
1236: as wrapper.log.bak or other files manually created with the same log file
1237: base name were also being deleted with 3.3.8.
1238: * (Standard, Professional) Fix a problem where the close window button in the
1239: title of the WrapperW log dialog was not correctly cancelling the dialog.
1240: * (Standard, Professional) Fix a problem where the WrapperW log dialog would
1241: sometimes fail to show itself on top of other windows if the splashscreen
1242: had been displayed on startup.
1243: * Fix a problem on 32-bit Windows versions where starting with he Wrapper,
1244: the WrapperManager.getUser() and getInteractiveUser() methods were always
1245: returning null. This problem was introduced in version 3.3.6.
1246: * (Professional) Fix a buffer overflow when sending alert emails to multiple
1247: addresses. This would sometimes cause crashes in versions 3.3.7 and 3.3.8
1248: when sending alert emails to even a single recipient. Because of the nature
1249: of the overflow, in most cases did not cause any problems.
1250:
1251: 3.3.8
1252: * Add the new start type DELAY_START for NT Services, which startes the service
1253: after other auto-start services are started plus a short delay.
1254: * Fix a problem where the Wrapper's PID file was not being set to the correct
1255: PID when the wrapper was launched daemonized. With the shell scripts that
1256: ship with the Wrapper, this means that it would not be possible to stop the
1257: Wrapper using the script because the expected PID did not exist. This was
1258: a problem introduced in 3.3.7.
1259: * Changed the timing for the wrapper's splashscreen when the splash screen
1260: mode was set to JVM_STARTING. Now the splashscreen will disappear when the
1261: JVM has been initialized.
1262: * Fix a problem where the splashscreen was being shown when starting a service
1263: or performing other command line operations.
1264: * Remove some extra debug output on startup for Mac versions.
1265: * Fix a crash in the Community Edition on PPC platforms of the Mac OSX version.
1266: This crash has been reproduced in all versions starting with 3.3.1. The OSX
1267: distribution is a universal binary but does not appear to result in a crash
1268: on x86 servers. Standard and Professional Editions were not affected.
1269: * Fix a problem on Windows versions where problems accessing the registry were
1270: not reporting the correct error message. This did not cause any problems in
1271: and of itself, but it made it difficult to track the down the cause.
1272: * When wildcards are used in the classpath elements, the list of matching jar
1273: files included in the classpath are now sorted to ensure that their order
1274: is consistent across installations. Normally it would not matter, but if
1275: certain classes or resources are redefined in multiple jars this will ensure
1276: that the application now always works the same.
1277: * Fix a problem where wrapper.logfile.maxfiles was being ignored when
1278: wrapper.logfile.rollmode=JVM was set.
1279: * Changed the way the wrapper.logfile.maxfiles property works with the ROLLNUM
1280: token. Now when the log files are rolled, all files greater than maxfiles
1281: count will be deleted. Previously, the Wrapper would roll within the maxfiles
1282: count and ignore extra files if they existed. This would cause extra files to
1283: be left around if the maxfiles property value was decreased.
1284: * Add new wrapper.logfile.purge.pattern and wrapper.logfile.purge.sort
1285: properties which make it possible to limit the number of log files in some
1286: advanced cases. Be sure to read the documentation before playing with them.
1287: * Fix a potential crash when referencing non-existent environment variables
1288: in the value of wrapper.logfile.
1289: * Modify the way all properties used to define file names behave so that
1290: undefined environment variable references will now have their '%' characters
1291: replaced by '_'. This is to avoid problems caused by file names containing
1292: '%' characters on some platforms.
1293: * Fix a problem introduced in 3.3.6 where the windows shown by the JVM or its
1294: child processes could not be displayed when running in iteractive mode.
1295: * Rework the TestWrapper application a bit so it can now be run in headless
1296: mode for testing.
1297: * Fix a problem on some UNIX platforms where the shell script was showing an
1298: extra '-n' when run with the "start" command.
1299: * Fix a problem for FreeBSD which could cause the wrapper being unable to stop
1300: the wrapper daemon if the ps command buffer size (kern.ps_arg_cache_limit)
1301: was too small to contain the wrapper command line.
1302:
1303: 3.3.7
1304: * (Professional and Standard) Added the ability to customize the wrapper.exe
1305: and wrapperw.exe binaries on Windows with a user specified icon and splash
1306: screen.
1307: * (Professional and Standard) Added a new wrapper.splashscreen.mode property
1308: to control how long the splashscreen is visible.
1309: * Fix a problem on SELinux where a strict security policy could lead the
1310: Wrapper fail to load the libwrapper library. Thanks to Jean for the hint.
1311: * Fixed a problem in the obfuscated license date, which caused a license to
1312: be reported as invalid if run in a timezone west of Japan. This feature
1313: was implemented in 3.3.6, but disabled on the site until the release of
1314: version 3.3.7. Thanks to Leo for the hint.
1315: * Added a new WRAPPER_PID environment variable. Feature Request #2870136.
1316: * Added a new WrapperManager.getWrapperLogFile() method and
1317: WrapperLogFileChangedEvent class that can be used to receive notifications
1318: of changes to the Wrapper log file currently in use.
1319: Feature Request #2870133.
1320: * (Profesional) Improved the wrapper.event.<event_name>.email.to property
1321: so it now supports the ability to specify multiple recipients.
1322:
1323: 3.3.6
1324: * Introduce the wrapper.timezone property. This property allows to set the
1325: timezone in which the wrapper will be executed. This property is available
1326: in the standard and the professional Edition of the Java Service Wrapper.
1327: * Fix a potential problem on Windows platforms where a failure to register the
1328: control handler was not being logged. If this happened, user logoffs would
1329: not be trapped correctly but no other problems would have occurred.
1330: * Fixed a problem in the shell script on Solaris platforms where a deep
1331: directory structure would cause the script to incorrectly report that the
1332: Wrapper was not running. That could lead to multiple zombie copies of the
1333: Wrapper and its application running in memory.
1334: Bug #1664303.
1335: * Fixed a problem in the shell script on HP-UX platforms where a deep
1336: directory structure would cause the script to incorrectly report that the
1337: Wrapper was not running. That could lead to multiple zombie copies of the
1338: Wrapper and its application running in memory.
1339: Bug #2812207.
1340: * Improve the error message displayed when there are problems initializing the
1341: main class specified for the WrapperSimpleApp, WrapperStartStopApp, or
1342: WrapperJarApp helper classes.
1343: * (Professional) Add new wrapper.event.<event_name>.loglevel and
1344: wrapper.event.<event_name>.message properties which can be used to output
1345: a customizable message like "Event: <event_name>" to the logs at an arbitrary
1346: log level.
1347: * Add debug output in the Windows version to log the full path of the native
1348: library.
1349: * Add a new wrapper.java.detect_debug_jvm property which will control whether
1350: or not the Wrapper disabled timeouts when java's debugger is in use. The
1351: Wrapper has automatically disabled timeouts in this case since version 3.2.1.
1352: Thanks to Ruslan Gainutdinov for the patch.
1353: * Fix a buffer overflow problem for values of wrapper.ntservice.name.
1354: * Fix a problem with where the wrapper.syslog.ident property was not working
1355: as documented. It had been necessary to use wrapper.ntservice.name in its
1356: place.
1357: * Add a new wrapper.ignore_sequence_gaps property which makes it possible to
1358: have non sequential numbered property values. This affects the
1359: wrapper.app.parameter.<n>, wrapper.event.<event_name>.command.argv.<n>,
1360: wrapper.filter.trigger.<n>, wrapper.java.additional.<n>,
1361: wrapper.java.classpath.<n>, wrapper.java.library.path.<n>,
1362: wrapper.ntservice.dependency.<n>, and wrapper.timer.<n>.interval,
1363: properties. The default value maintains past functionality.
1364: Feature Request #1930298.
1365: * (Professional) Fix a problem where the Event Handler Variables
1366: were not being set correctly in the values of the
1367: wrapper.event.<event_name>.command.argv.<n> properties.
1368: * (Professional) Fix a potential access violation if memory allocations fail
1369: while sending event mails or executing event commands.
1370: * Add a new WRAPPER_HOSTNAME default environment variable as an alias of the
1371: existing WRAPPER_HOST_NAME variable.
1372: * (Professional) Deprecate the use of the wrapper.event.<event_name>.set_environment
1373: property. It will remain in the product for compatibility but its use is
1374: discouraged as it does not always work correctly when the configuration
1375: file is reloaded. See the property's documentation for more details.
1376: * Add a new DUMP action to the wrapper.filter.action.<n> property to make it
1377: possible to invoke a thread dump in response to a specific string in the
1378: JVM's console output.
1379: * Fix a problem where the WrapperManager.stopAndReturn method was dead locking
1380: if called when the JVM was being run in standalone mode without the Wrapper.
1381: Bug #2711872.
1382: * (Standard, Professional) Modify the way the licensing times work so the
1383: Wrapper compares the License Upgrade Term to an official release date
1384: rather than the build date. This makes it possible to release additional
1385: platforms at a later date while keeping the use of a license consistent.
1386: * (Standard, Professional) Make it possible to obfuscate the upgrade term in
1387: License Key files for development licenses so it is not visible to an end
1388: user what the development license holder's upgrade term is. This feature
1389: is accessed from the License Management Page when downloading a new or
1390: existing License Key file.
1391:
1392:
1393: 3.3.5
1394: * Fix a problem on some UNIX platforms introduced in 3.3.4 where the Wrapper
1395: would crash on startup if the configured JVM could not be found.
1396: * Fix a problem introduced in 3.3.2 where the Wrapper could crash if the
1397: system host name was longer than 27 characters in length.
1398: * Fix a potential problem with the way thread ids were being compared on UNIX
1399: systems.
1400: * Add a new wrapper.java.additional.auto_bits property which will automatically
1401: add the -d32 or -d64 arguments to the JVM for platforms whose JVMs typically
1402: expect the argument.
1403: * (Professional) Fix a problem with the Date field of outgoing event emails.
1404:
1405: 3.3.4
1406: * (Standard, Professional) Update the development license to version 1.1
1407: so that a new copyright notice file can be shipped with user applications
1408: rather than the full license text.
1409: * The Community Edition may be licensed under either the GPL2 based Community
1410: License, or the Development License. The source for the Standard and
1411: Professional Editions of the Wrapper are proprietary.
1412: http://wrapper.tanukisoftware.org/doc/english/licenseOverview.html
1413: * Fix a problem introduced in 3.3.2 where querying a the status of a Windows
1414: service with the -q or -qs commands resulted in an access violation. The
1415: running status of the service was reported correctly but additional
1416: configuration information was failing. Bug #2644515.
1417: * Add a new wrapper.disable_restarts.automatic property to disable only
1418: restarts caused by JVM timeouts, crashes, etc. Manual or configured
1419: restarts will still be allowed.
1420: * Switch to using make for HPUX IA 32/64 builds.
1421: * Add Advice comments when the Wrapper fails to launch the JVM process.
1422: * Fix a problem on UNIX platforms where log entries made by the forked Wrapper
1423: process would result in two blocks of log entries in the log file because
1424: the parent Wrapper process would think they were console output from the JVM
1425: process.
1426: * Add a set of new wrapper environment variables that can be referenced in the
1427: wrapper.conf file to generate random numbers, or timestamps for use in
1428: generating unique file names, etc. See the Default Environment Variable
1429: definitions section for more details.
1430: * (Standard, Professional) Fix a problem with Development licenses being
1431: able to authorize applications using Integration Method #4 which was
1432: added in version 3.3.3.
1433: * Add the number of bits of the current Wrapper to the startup banner to aid
1434: in support requests.
1435: * (Standard, Professional) Fix a crash problem on HPUX versions which would
1436: reliably happen on some machines at startup.
1437:
1438: 3.3.3
1439: * Modify the wrapper.ignore_signals property so it now takes the values
1440: WRAPPER, JAVA, and BOTH, in addition to TRUE and FALSE.
1441: * Modify the WrapperManager so it is now careful never to poll the native
1442: library once the JVM is flagged as being ready to shutdown. This is to
1443: make sure that the JVM never exits in the middle of a call as that could
1444: lead to the JVM crashing.
1445: * Add a pair of methods to allow threads to request and release locks which
1446: will prevent the Wrapper from letting the JVM exit while certain operations
1447: are in progress. See WrapperManager.requestShutdownLock() and
1448: WrapperManager.releaseShutdownLock().
1449: * Fix a problem where interactive services would sometimes leave a console
1450: window visible when after starting up. The Wrapper is now more resilient
1451: about closing the window even if it fails to do so initially.
1452: * Add a new integration method (#4), which makes it easy to configure the
1453: Wrapper to execute an executable jar file.
1454: * Fix a problem where the random generator was not being seeded correctly
1455: before naming the Wrapper's console window when running as a Windows
1456: service. This was leading to problems identifying the wrapper's console
1457: when more than one service was running on the same machine.
1458:
1459: 3.3.2
1460: * Add a file information record to the wrapper.exe and wrapperw.exe binaries
1461: so the Version tab will be displayed correctly in the Properties dialog of
1462: the file.
1463: * (Standard, Professional) Fix a problem with the wrapperw.exe binary where
1464: the log dialog was not being displayed correctly when the Wrapper was
1465: launched with the "-?", "-v", or "-h" arguments.
1466: * (Standard, Professional) Fix a problem with the wrapperw.exe binary where
1467: a message was being displayed in the dialog with the location of the full
1468: log file even if there had not been any entries written to the log.
1469: * (Professional) Improve the debug output produced when sending event emails
1470: when the wrapper.event.<event_name>.email.debug property enabled.
1471: * (Professional) Add wrapper.event.<event_name>.email.send.timeout and
1472: wrapper.event.<event_name>.email.receive.timeout properties to avoid the
1473: wrapper hanging waiting for a response from a remote mail server.
1474: Bug #2064885.
1475: * (Professional) Fix a problem where the Wrapper would get stuck and fail to
1476: send emails with some mail servers. Problems was being caused by incorrect
1477: linefeeds in the body of the email.
1478: * Add a warning if the leading '#' is missing from an '#include' in the
1479: configuration file to assist users with include file problems.
1480: * Added a new wrapper.ntservice.generate_console property which will cause
1481: the Wrapper to always generate a console when running as a service and
1482: then hide it immediately. This will cause a slight flicker but is needed
1483: to support thread dumps. Bug #2060181.
1484: * Fix a problem in the Windows version where the console window would
1485: sometimes be left visible when running as an interactive service even when
1486: it was configured to be hidden.
1487: * Add support for PowerEvents so Windows services can respond to suspend
1488: and resume events.
1489: * Fix a problem where the wrapper.key system property passed to the JVM was
1490: being generated incorrectly randomly, 1 in 2048 times the JVM was launched.
1491: This would result in the JVM failing to start and the Wrapper shutting down.
1492: * Add a new wrapper.disable_console_input to disable to feature which allows
1493: the Wrapper to pass console input on to the Java process.
1494: * Fix a buffer overflow problem in the logging code which would happen once on
1495: startup. This was benign on most platforms but was causing intermittent
1496: crashes in the 32-bit AIX version.
1497: * Modify the way configuration properties are parsed so that their names are
1498: no longer case sensitive.
1499: * Modify the WrapperServiceException so that a new getErrorCode method can be
1500: used to obtain the integer error code which caused the exception.
1501: Feature Request #2188280.
1502: * (Standard, Professional) Fix a problem where on some Windows machines the
1503: Wrapper would return a random hostId that changed each time the system was
1504: rebooted.
1505: * (Standard, Professional) Make it possible to define License Keys so that
1506: their property names are encoded using either the host name or hostId. This
1507: makes it possible to define multiple keys within the same configuration file,
1508: visible on the same host. This was necessary to support some load balanced
1509: network adapters where the visible hostId changes depending on the active
1510: physical network adapter.
1511: * Rework the Java side state engine so it is now possible for the Java side of
1512: the Wrapper to respond to stop events while the WrapperListener.start method
1513: is still in progress.
1514: * Add a new wrapper.listener.force_stop property which allows control over
1515: whether the WrapperListener.stop method is called on shutdown even if the
1516: WrapperListener.start method has not yet completed.
1517: * Fix a problem on Windows where the ability to start and stop the Wrapper as
1518: a service using the Wrapper itself was requiring the Administrator permission
1519: when a lower permission should have been possible. The Wrapper should now
1520: allow service control to do whatever is possible from the Services control
1521: panel.
1522: * Fix a memory corruption error if the value of wrapper.java.maxmemory was more
1523: than 4 digits in length. wrapper.java.initmemory did not have any problems.
1524: * (Professional) Add a new wrapper.event.<event_name>.email.client.host
1525: property which makes it possible to configure the host name sent in EHLO and
1526: HELO commands to the SMTP server.
1527: * Add a new default environment variable, WRAPPER_HOST_NAME, which stores the
1528: name of the machine where the Wrapper is running.
1529:
1530: 3.3.1
1531: * Add debug output showing the current os name and architecture to aid in
1532: debugging problems.
1533: * (Standard, Professional) Improve the message displayed when a license key
1534: is found but is deemed to be invalid.
1535: * Modify the template wrapper.conf file to help users debug include file
1536: problems.
1537: * Disable the console title feature on all UNIX platforms other than LINUX
1538: because the console title does not get reset correctly when the Wrapper
1539: process terminates.
1540: * Add support for HP-UX IA64 CPUs.
1541: * Update the license banner in source files so it is clearer that the user
1542: is restricted by the license they agreed to.
1543: * Modify the Community edition so it will now display a Licensed to banner
1544: on startup if shipped with a Development License. This is required to
1545: enable the distribution of the Community Edition under the Development
1546: License.
1547: * (Professional) Fix a problem where the UNIX versions of the Professional
1548: Edition would sometimes deadlock on startup when run as a daemon process.
1549: Bug #1989355.
1550: * (Professional) Added two new events; jvm_failed_invocation and
1551: jvm_max_failed_invocations. Feature Request #1994718.
1552: * Fix a problem where the Windows service exit code was not being set
1553: correctly when the JVM exited with a non-zero exit code. The problem
1554: could be seen by running "sc query {service}" from the command line.
1555: Bug #1859061.
1556: * Added support for the Windows Itanium 64-bit platform.
1557: * Added support for the HP-UX Itanium 32 and 64-bit platforms.
1558: * Added support for the MAC OSX 64-bit platform.
1559: * (Standard, Professional) Fix a problem on Windows versions where servers
1560: which reported a large number of possible host ids could cause a buffer
1561: overflow on startup. This crash was possible when using either
1562: Development or Server licenses. Removed duplicate host ids from the list
1563: of possible ids.
1564: * Add a new "condrestart" command to the shell script which will restart
1565: the Wrapper only if it is already running. Feature Request #1928045.
1566: * Fix a problem where the 64-bit Solaris x86 version was unable to load its
1567: JNI library. Bug #1992039.
1568: * Fix a problem on Windows versions where a frozen JVM process was not always
1569: being killed. This could result in the zombie JVM processes being left
1570: around that consumed memory and other resources.
1571: * Add a new wrapper.ignore_console_logouts property which allows the Wrapper
1572: and JVM to survive logouts when launched as a console application from
1573: another service.
1574: * (Standard, Professional) Add a wrapperw.exe binary in Windows implementations
1575: which makes it possible to run the Wrapper without a console. A console still
1576: flickers for an instant when the Wrapper starts. This is the same issue that
1577: has existed when running as an interactive service and is required to make
1578: thread dumping possible.
1579: * (Standard, Professional) Add new wrapper.logdialog.enable,
1580: wrapper.logdialog.format, wrapper.logdialog.lines, and
1581: wrapper.logdialog.loglevel properties used to configure the display of a Log
1582: dialog when the wrapperw.exe binary exits in an error state.
1583: * Fix a problem where the Wrapper was attempting to reopen its backend port
1584: even when the JVM was down. This was only a problem when the defined port
1585: range was limited to a single port with the wrapper.port.min and
1586: wrapper.port.max properties. In such a case one or more warning messages
1587: were being displayed because the port is locked for a few moments after
1588: being closed.
1589: * (Standard, Professional) The wrapper.initmemory.percent and
1590: wrapper.maxmemory.percent properties were not correctly being calculated
1591: relative to a maximum of 2048MB for 32-bit versions of the Wrapper.
1592: Bug #2053167.
1593:
1594: 3.3.0
1595: * Add a new wrapper.ping.interval.logged property which makes it possible to
1596: reduce the debug output caused by ping transactions between the Wrapper and
1597: JVM.
1598: * Fix a problem on Windows where the Windows Service Manager was not waiting
1599: the full configured time of the wrapper.jvm_exit.timeout and
1600: wrapper.shutdown.timeout properties. This was leading to the net stop
1601: command timing out and the system shutting down without the java application
1602: having fully stopped. Bug #1582568.
1603: * If internal firewalls were preventing the backend socket from being created,
1604: it was not being made clear what the cause was. It was also possible that
1605: the JVM would deadlock on shutdown. This second problem was recovered from
1606: when the Wrapper killed the JVM.
1607: * Rework the console output from all Wrapper classes to make it much more
1608: obvious that that is their source.
1609: * Submit a patch to the UNIX sh script by Chris Dance which makes it possible
1610: to tell the shell to wait a few seconds for the wrapper to start up. Also
1611: includes some modifications to work correctly on older Debian and RedHat
1612: systems.
1613: * Fix a problem where the local copy of ant was not always being used
1614: correctly on UNIX systems which have a default copy of any installed.
1615: Thanks to Robey Pointer for the patch.
1616: * Add the -lm to the command line when building Linux 32 and 64 bit versions
1617: of the wrapper on Linux. This is to support building on recent Debian
1618: and Ubuntu versions. Thanks to Robey Pointer for the patch.
1619: * Add support for the SIGUSR1 and SIGUSR2 signals so they can now trigger a
1620: shutdown, restart or be forwarded to the JVM for custom functionality.
1621: See the wrapper.signal.mode.usr1 and wrapper.signal.mode.usr2 properties.
1622: Based on a patch by Robey Pointer. Note that the JVM process does not
1623: trap SIGUSR1 or SIGUSR2 signals as they are used internally by the JVM
1624: as part of the garbage collection process.
1625: * Fix a problem where the WRAPPER_OS, WRAPPER_ARCH, and WRAPPER_BITS
1626: environment variables were not being initialized correctly for the various
1627: unix platforms.
1628: * Removed the 4096Mb upper limit set on the wrapper.java.initmemory and
1629: wrapper.java.maxmemory properties. 64bit users need to go way beyond that.
1630: * Fix a problem where relative include file references in the configuration
1631: file were not working correctly if the wrapper.working.dir was used to
1632: change the working directory. The working directory is now always reset
1633: to its original value as the configuration file is being loaded.
1634: * Added a new wrapper.registry.java_home property which makes it
1635: possible to specify the location of java within the registry.
1636: * Set a new WRAPPER_JAVA_HOME environment variable if the JAVA_HOME is
1637: located in the Windows registry.
1638: * Modify the way properties are looked up so that any unreplaced environment
1639: variable references will be reevaluated in case they were set after the
1640: property was originally set. This is possible with some WRAPPER_*
1641: environment variables or depending on the placement of set.* properties
1642: in the configuration file.
1643: * Set any unset properties to their default values internally. This is
1644: necessary so the WrapperManager.getProperties() method returns the
1645: correct set of active properties.
1646: * Fix an occasional crash with 64-bit UNIX caused by a native synchronization
1647: problem when system signals are trapped. Bug #1614010.
1648: * Fix a problem on Solaris versions, where the Wrapper was not correctly
1649: recovering and attempting another back end port when the first was already
1650: in use. Bug #1594073.
1651: * Fix a problem on Solaris and AIX where the RUN_AS_USER feature of the
1652: shell script was not working due to lack of support for the "-m" option of
1653: su. The shell script now uses "su -". Bug #1590168.
1654: * Add HP-UX Makefiles for building with make. Fix some problems in the
1655: shell script to make the script work better on HP-UX. Thanks to David
1656: Brown and Nicolas Varney for the patches.
1657: * Fix a problem where any signals received by the JVM and triggering a
1658: SIGCHLD signal in the Wrapper were being interpretted as the JVM having
1659: stopped. This was not always true. Bug #1643666.
1660: * The Wrapper is now able to detect when the JVM process is stopped and
1661: continued. It will still timeout if stopped, but a descriptive warning
1662: is now logged.
1663: * Increase the maximum number of log entries which can be queued to avoid
1664: losing them. These are only used for log entries outside of the primary
1665: thread.
1666: * Fix a problem in the shell script which was making it impossible to stop
1667: the Wrapper or query its status on OSX.
1668: * Add support for 64 bit AIX. Thanks to Nicolas Varney for supplying a
1669: Makefile.
1670: * Correct the AIX library extension to be ".a".
1671: * Rename the UNIX Makefiles so it is more obvious which tool must be used
1672: to build with them.
1673: * Fix a problem where the HP-UX native library would not be located
1674: correctly for some processor types if the file had a platform specific
1675: name.
1676: * Internally rename the WRAPPER_JSTATE_LAUNCH state to
1677: WRAPPER_JSTATE_LAUNCH_DELAY for clarity.
1678: * Fix a problem where the UNIX versions of the Wrapper would shutdown
1679: rather than restarting a frozen JVM if the arrival of the SIGCHLD signal
1680: from the old JVM process was delayed by more than a second or two.
1681: * Rework the Windows build so it now uses nmake and a Makefile rather than
1682: vcbuild. This is probably not as clean, but it was needed to get the
1683: 64-bit build working.
1684: * Fix a problem on Windows versions where quoted values specified from the
1685: command line were not always being requoted correctly when generating the
1686: java command line.
1687: * Add validation checks for Windows versions to make sure that all additional
1688: parameters, application arguments, the classpath, and library path all
1689: contain values which are quoted correctly. Incorrectly quoted values will
1690: now result in a warning message that will help resolve the problem.
1691: * Fix a memory leak when calling WrapperManager.listServices() on Windows.
1692: Bug #1665947.
1693: * Fix a buffer overflow problem if the Wrapper was launched without explicitly
1694: specifying a configuration file.
1695: * Add tests of the return values of all malloc calls to catch out of memory
1696: errors and recover as gracefully as possible. Bug #1649880.
1697: * Modify the WrapperManager.signalStarting and signalStopping methods so that
1698: they will never have the effect of shortening the existing timeout.
1699: Updated the javadocs of both methods so they more accurately reflect what
1700: the methods do.
1701: * Move the Wrapper Copyright banner into the Wrapper process so it will be
1702: output more consistently.
1703: * Branch the code to support Community, Standard, and Professional Editions
1704: of the Java Service Wrapper.
1705: * (Standard, Professional) Add support for Server (Fixed) as well as
1706: Development (OEM based) licenses.
1707: * (Standard, Professional) Add 64-bit versions of the Windows version. The
1708: 64-bit Community Edition will not be distributed initially to support
1709: ongoing development costs.
1710: * (Professional) Add event handling callbacks for Wrapper start/stop, JVM
1711: start/stop, JVM started/stopped, JVM restart, JVM killed, and JVM unexpected
1712: exit events.
1713: * (Professional) Add the ability to send emails in response to any event
1714: callback.
1715: * (Professional) Add the ability to execute a a user configured command in
1716: response to any event callback.
1717: * Add WRAPPER_BIN_DIR and WRAPPER_WORKING_DIR environment variables which are
1718: now available for use within the wrapper.conf file as well as by any child
1719: processes.
1720: * Add documentation to the integration pages about existing system properties
1721: that be used to control the way the WrapperSimpleApp and WrapperStartStopApp
1722: handle application startup.
1723: * Remove support for native PPC and x86 distributions of the Wrapper for
1724: MAC OSX in favor of the universal X-Code distribution. This appears to be
1725: the standard for the market and saves lots of time on testing.
1726: * Add a new '-it' command to the Windows version which makes it possible to
1727: install and start a service as a single command.
1728: * Fix a problem where the PATH environment variable was not being set correctly
1729: on Windows versions when run as a service if the wrapper.ntservice.account
1730: was set and a PATH was set for both the SYSTEM and user accounts.
1731: Bug #1702274.
1732: * Modify the shell script to set JAVA_HOME to the default JVM location on
1733: OSX systems if it is not already set. OSX always places the JVM in a known
1734: location so this is possible. Thanks to Andrew Williams for the patch.
1735: * Fix a problem where the UNIX shell script would fail if the APP_NAME was set
1736: to a value containing spaces. Thanks to Andrew Williams for the patch.
1737: Bug #1695678.
1738: * Fix a problem where the DIST_ARCH was not being resolved correctly on HP-UX
1739: systems. Thanks to Matej Kraus for the patch. Patch #1697421.
1740: * Log output from the timer thread was not being queued correctly, this could
1741: have lead to timing problems if there were any delays writing to disk.
1742: * Add partial support for OS/400 into the build file. Still needs a Makefile.
1743: * Fix a problem where the WrapperActionServer would deadlock in its stop method
1744: if the JVM shutdown was initiated by a call to the shutdown or restart
1745: actions.
1746: * Add support for wrapper.console.title on UNIX platforms. Add a set of
1747: wrapper.console.title.<platform> properties which make it possible to set the
1748: title based on the platform.
1749: * Fix a problem where the wrapper.ntservice.account and
1750: wrapper.ntservice.password properties were being stored in the system
1751: registry if the they were specified on the command line when the Wrapper
1752: was installed as a service. This was broken in version 3.2.2.
1753: Bug #1538725.
1754: * Fix a problem where the DUMP command was not working with the
1755: wrapper.commandfile property when run as a service on Windows.
1756: Bug #1644421.
1757: * Fix a problem where wildcards like "*.*" or "*" in a classpath property were
1758: including the "." and ".." files on Windows versions. Bug #1517928.
1759: * Modify the debug log output when the Wrapper is attempting to load its native
1760: library in an attempt to make the expected failures less threatening.
1761: * Commit a patch by Rob Oxspring which adds the start_msg and stop_msg commands
1762: to the shell script. These are expected by init scripts on HP-UX.
1763: Patch #1750027.
1764: * Add a DETAIL_STATUS flag to the UNIX shell script which will cause the
1765: status, start_msg, and stop_msg commands to display the current internal
1766: status of both the Wrapper and Java processes.
1767: * Commit a patch by Rob Oxspring which adds an init block to the UNIX shell
1768: script to make it work with install_initd and remove_initd scripts used by
1769: SUSE linux. Patch #1750028.
1770: * Commit a patch by Travis Carlson, ia64 systems were being grouped as "x86"
1771: systems. They now are assigned the name "ia" which makes it possible to
1772: create a distribution for them. Patch #1663887.
1773: * (Standard, Professional) Add new wrapper.java.initmemory.percent and
1774: wrapper.java.maxmemory.percent properties which make it possible to set
1775: the initial and maximum memory values relative to the amount of physical
1776: memory on the system. Feature Request #1741051.
1777: * Add a new #include.debug declaration in the wrapper configuration file which
1778: makes it much easier to debug problems with cascading include files.
1779: * Add -l and --controlcode commands to the Windows version which make it easy
1780: to send user defined control codes to the Wrapper running as a service.
1781: * Fix a synchronization problem in the logging code which could result in
1782: data corruption or access violations.
1783: * Add version numbers to the bat and sh scripts to make them easier to
1784: support.
1785: * Make the wrapper.ntservice.name, wrapper.ntservice.displayname, and
1786: wrapper.ntservice.description properties aliases of new wrapper.name,
1787: wrapper.displayname, and wrapper.description properties as they are now
1788: used on UNIX platforms as well as Windows.
1789: * Fix a problem where the wrapper would sometimes fail to send a packet to
1790: the JVM because the sending of the packet would block. Thanks to Peter
1791: Gorgon for the patch.
1792: * Fix a problem where CPUs identifying themselves as 'ia64n' or 'ia64w' were
1793: not correctly being categorized as 'ia'. Thanks to Stirling Chow for the
1794: patch. Patch #1859412.
1795: * Add -d and --dump commands to the Windows version which make it possible to
1796: send thread dump requests to the Wrapper when running as a service. Works
1797: in association with the new wrapper.thread_dump_control_code property.
1798: Feature Request #1118110.
1799: * (Professional) Add wrapper.timer.<n>.interval and wrapper.timer.<n>.action
1800: properties which make it possible to schedule Wrapper shutdowns, JVM
1801: restarts and thread dumps at arbitrary times.
1802: * Fix a problem where the default configuration file name was being corrupted
1803: by a buffer overrun. Thanks to Rob Joyce for the patch. Patch #1879049.
1804: * Fix a problem where the WrapperManager would sometimes attempt to unregister
1805: its shutdown hook after the shutdown hook had been initiated. Bug #1799489.
1806: * Fix a problem where log files were limited to 2GB on Linux systems.
1807: Bug #1881038.
1808:
1809: 3.2.3
1810: * Add support for x86 Mac OS X distributions.
1811: * The 3.2.2 Windows version was accidentally released with its MFC libraries
1812: dynamically linked. This meant that anyone who did not have VS8 installed
1813: were not able to run the Wrapper due to missing DLLs. This version fixes
1814: that snafu by correctly using statically linked libraries as was done in
1815: previous versions built with VS6. Bug #1578554.
1816:
1817: 3.2.2
1818: * Correct a typo in the usage output of the WrapperStartStopApp. Thanks to
1819: Michael Giroux for pointing it out.
1820: * Fix a problem on OSF1 systems where the backend socket was not listening
1821: correctly due to a backlog of 0. This was broken in 3.2.0. Thanks to
1822: Phillip Gussow for supplying a patch.
1823: * Remove the com.silveregg.wrapper package classes that were deprecated in
1824: version 3.0.0.
1825: * Fix a potential problem in the UNIX script where the lock file permissions
1826: were not being set correctly if the LOCKFILE and RUN_AS_USER variables are
1827: specified but the group of the specified user could not be resolved.
1828: * Fix a problem where the exit code returned by WrapperListener.stop was being
1829: ignored in some cases.
1830: * Fix a problem where the shell script would not work correctly when the
1831: wrapper or its configuration files were located in a directory path
1832: containing spaces.
1833: * Apply a series of patches by Michael Saya to get the Windows 64 bit build
1834: working.
1835: * Fix a problem in UNIX versions where the SIGTERM handler was being disabled
1836: when a SIGCHLD was received.
1837: * Added support in UNIX versions for the SIGHUP signal.
1838: * Migrated the source to Subversion from CVS. Did a bunch of cleanup in the
1839: source, removing CVS specific tags.
1840: * Fix a problem in UNIX versions were the pid file specified by the
1841: wrapper.java.pidfile property contained the wrapper pid rather than the
1842: jvm pid. Bug #1565011.
1843: * Fix a problem in UNIX versions where the file specified by the
1844: wrapper.java.pidfile property was not always being deleted when the JVM
1845: process went away.
1846: * A user encountered a JVM bug where calls to System.exit were resulting in
1847: an IllegalThreadStateException being thrown. Added some code to trap this
1848: and shut down the JVM using other means to avoid a hang during shutdown.
1849: * Fix a NullPointerException caused by users incorrectly implementing
1850: an Integration Method #3 class and then calling WrapperManager.start with
1851: a null value for the args parameter.
1852: * Update the banner displayed by the Wrapper on startup to include a
1853: copyright notice. Please see the license page of the documentation for
1854: details.
1855: * Add a new 'Z' log format which will log the time to millisecond accuracy.
1856: * Fix a problem where the JVM exit code was not being set correctly when
1857: the JVM was shutdown using WrapperManager.stopImmediate(). The exit code
1858: of the Wrapper was being set correctly through other means however.
1859: * Fix a potential synchronization problem in the logging code if a JVM exits
1860: with debug output enabled.
1861: * Updated the WrapperListener.stop method javadocs to better explain the
1862: exitCode value under certain exit modes.
1863: * On UNIX versions, add a log message which records the signal that caused
1864: the JVM process to exit when it terminates unexpectedly.
1865: * Fix a problem where the wrapper.on_exit.<n> property was not working
1866: correctly in some cases on UNIX. With help from Andreas Schafer.
1867: * Add support for building the Wrapper with Visual Studio 8 for Windows.
1868: Releases will now be done using this compiler.
1869: * Fix a CRITICAL bug in the 3.2.0 and 3.2.1 Windows versions of the Wrapper
1870: where the Wrapper would crash under rare circumstances when running as a
1871: service. If the service manager interrogated the service at the same
1872: instant as the wrapper was pinging the JVM, the wrapper was sometimes
1873: crashing due to a synchronization problem. The problem did not exist
1874: prior to 3.2.0. Bug #1574537.
1875: * Fix a minor logging problem where the 'D' format was not displaying the
1876: correct thread name for queued log messages.
1877:
1878: 3.2.1
1879: * Fix a problem with the solaris-sparc-64 makefile.
1880: * Add a solaris-x86-64 makefile.
1881: * Merge in a patch by Hugo Weber to make it possible to configure the Wrapper
1882: to pull the JRE from the system registry on windows.
1883: * Fix a batch file bug added in 3.2.0 where the scripts would not function
1884: correctly if the full path to the batch file contained spaces.
1885: Bug #1450601.
1886: * Modify the message shown when a native library fails to load so the
1887: exception message text is now shown in the log without having to enable
1888: debug log output.
1889: * Modify the UNIX shell script to be more informative if the script is unable
1890: to locate a wrapper binary due to a executable bit permission problem.
1891: * Fix a minor permission problem with the build for the delta-pack.
1892: * Commit a patch by Juergen Hermann to make the error shown when realpath
1893: fails clearer.
1894: * Add the ability to use a default wrapper.conf file that is in the same
1895: directory as the wrapper binary. The file will be named based on the
1896: name of the wrapper binary.
1897: * Synchronize the command line so that both the Windows and UNIX versions
1898: are now the same. The old command line syntaxes are now supported
1899: everywhere so there will be no compatibility problems.
1900: * It is no longer possible to specify arguments using the '/c' syntax.
1901: This was undocumented so hopefully it is not being used. The documented
1902: '-c' syntax must now be used. The change was necessary to synchronize
1903: the command line between UNIX and windows platforms.
1904: * The 32-bit HP-UX 3.2.0 build was generating a libwrapper.so file rather
1905: than libwrapper.sl.
1906: * Make the WrapperManager.setConsoleTitle, getWrapperPID, and getJavaPID
1907: methods available through JMX.
1908: * Fix a state engine problem introduced in 3.2.0 which was causing the
1909: wrapper.on_exit.<n> properties to be ignored in most cases.
1910: * Fix a potential problem that could have caused crashes when debug logging
1911: was enabled.
1912: * Fix a problem where signals were not being handled correctly on some UNIX
1913: platforms, including AIX. This was making it impossible to shutdown the
1914: wrapper cleanly with the TERM signal. Bug #1477619.
1915: * Add new default environment variables which can be referenced in a
1916: configuration file to configure platform specific directories and file
1917: names. WRAPPER_OS, WRAPPER_ARCH, and WRAPPER_BITS.
1918: * Add a -v argument to make it possible to request the version from a wrapper
1919: binary.
1920: * Add support for registering the WrapperManager MBean with the
1921: PlatformMBeanServer when run on a 1.5+ JVM. See the JMX section in the
1922: documentation for details.
1923: * Rework the way timeout properties are handled. Values of 0 now actually
1924: disable the timeouts rather than setting them to a large value. To avoid
1925: overflow problems when converting to internal timer ticks, timeouts are now
1926: restricted to a maximum of 20 days, or 1728000 seconds. Change affects the
1927: wrapper.cpu.timeout, wrapper.startup.timeout, wrapper.ping.timeout,
1928: wrapper.shutdown.timeout, and wrapper.jvm_exit.timeout properties. For
1929: values less than 20 days, there should be no change in functionality.
1930: * Add support for debuggers. The Wrapper will now show a warning on startup
1931: and then again the first time a timeout occurs. But all timeouts will be
1932: ignored. This is to avoid problems with the Wrapper restarting a suspended
1933: JVM in the middle of a debugging session. The wrapper enters this mode if
1934: the wrapper.java.command ends with the string "jdb" or "jdb.exe", or the
1935: "-Xdebug" parameter is passed to the JVM.
1936: * Add 'athlon' to the list of supported architectures.
1937: * Fix a problem where the environment variables loaded when a service was
1938: started were always the system environment even if the service was running
1939: as a specific account. The environment of a specific account will now be
1940: loaded on top of the system environment if the USERNAME environment
1941: variable is set by the system. Bug #1491138.
1942: * Added new wrapper.ntservice.pausable and wrapper.ntservice.pausable.stop_jvm
1943: properties to make it possible to pause and resume the Wrapper when installed
1944: as a Windows service.
1945: * Added new Pause and Resume batch files as well as modified the command batch
1946: file to support pause and resume.
1947: * Added PAUSE and RESUME commands for use by the wrapper.commandfile property.
1948: * Fix a problem with the wrapper.pidfile, wrapper.java.pidfile,
1949: wrapper.anchorfile, wrapper.commandfile, wrapper.statusfile,
1950: wrapper.java.statusfile, wrapper.java.idfile, and wrapper.lockfile
1951: properties where forward slashes in paths were not being changed to back
1952: slashes on Windows versions.
1953: * Simplify the code used to load a native library by using the
1954: System.mapLibraryName method rather than doing the same thing manually.
1955: * Add a new wrapper.syslog.facility property which makes it possible to
1956: specify the syslog facility on UNIX systems. Thanks for the patch from
1957: Bruce Pennypacker.
1958: * Removed the custom thread counting used to keep track of when the wrapped
1959: Java application has completed. It is now done in a different way that
1960: will work on all Java implementations without requiring any special
1961: consideration of the current JVM. Deprecated the
1962: wrapper.monitor_thread_count and wrapper.thread_count_delay properties.
1963: Bug #1470265.
1964: * The WrapperStartStopApp helper class still requires thread counting if the
1965: stopWait parameter is set to true. Previous versions all hardcoded the
1966: system thread count to 1 which worked for most JVMs. A new system property,
1967: org.tanukisoftware.wrapper.WrapperStartStopApp.systemThreadCount, was added
1968: to make it possible to customize. It currently defaults to 1.
1969: * Make it possible to extend the WrapperSimpleApp and WrapperStartStopApp
1970: helper classes. Feature Request #1510274.
1971: * Add warning messages if the old org.silveregg.wrapper package classes are
1972: still being used. They will be removed in the next release.
1973:
1974: 3.2.0
1975: * Rework the release cycle so that the wrapper.jar file released for all
1976: platforms is now built on the same machine. This resolves a few
1977: incompatibility problems caused by jars built on very new JVMs but run
1978: on old JVMs.
1979: * Add additional output when the JVM can not be launched due to security
1980: restrictions on Windows.
1981: * Greatly improved the performance of file logging. On a windows test machine
1982: 3.1.2 could log 67210 lines of output in 20 seconds with a 80-15% split
1983: between the Wrapper and JVM process CPU usage. It now outputs 215214 lines
1984: with a 64-34% split, also showing less load on the system process. This is
1985: a 220% increase in performance. In both cases, the JVM was completely idle
1986: other than the console output which makes the Wrapper appear to be a bit of
1987: a CPU hog. In fact it is the only process doing any work in this case.
1988: This improvement was accomplished by keeping the log file open unless idle.
1989: The idle time can be controlled using the new
1990: wrapper.logfile.inactivity.timeout property. The speed increase on UNIX
1991: platforms was much smaller at around 10%.
1992: * Add a new property, wrapper.disable_restarts, which will completely disable
1993: the Wrapper's ability to restart JVMs.
1994: * Add a pair of new properties, wrapper.port.min and wrapper.port.max, which
1995: make it possible to define the port range used when a specific wrapper.port
1996: is not specified.
1997: * Fix a problem where certain characters like umlauts were being stripped from
1998: property values. Bug #1049528.
1999: * Make the PIDs of the Wrapper and Java process easier to access by providing
2000: a new pair os system properties; wrapper.pid and wrapper.java.pid, as well
2001: as a new pair of methods; WrapperManager.getWrapperPID() and
2002: WrapperManager.getJavaPID().
2003: * Add a new WrapperEventListener class which can be implemented to receive
2004: a wide variety of events from the Wrapper.
2005: * Add a WrapperServiceControlEvent class which will report any service control
2006: codes received by the Wrapper as it is running as an NT service. This was
2007: added to make it possible for other applications to sent custom codes to the
2008: Wrapper using the Window Service Manager.
2009: * Add a WrapperManager.listServices() method which can be used to obtain the
2010: status of all services on a Windows system.
2011: * Add a WrapperManager.sendServiceControlCode() method which makes it possible
2012: to start, stop, pause, continue, any service on Windows systems. It is also
2013: possible to send custom user codes via the service manager.
2014: * Add comments in the sh script to support the chkconfig command.
2015: * Implement the ability to read from standard input via System.in. Feature
2016: Request #1024693.
2017: * Made the tick based timer the default by changing the default value of the
2018: wrapper.use_system_time property to false. Most users should see an
2019: improvement in reliability under heavy loads with this new setting. If you
2020: have extended any timeouts in the past, you may wish to try going back to
2021: defaults as they may no longer need to be extended.
2022: * Add a new wrapper.restart.reload_configuration property which causes the
2023: Wrapper to reload its configuration file immediately before a JVM restart.
2024: Properties which can not be reloaded have comments stating that fact in
2025: their documentation. Feature Request #981060.
2026: * Fix a problem in the UNIX shell script which was preventing the script from
2027: locating the PID and anchor files when the wrapper.working.dir property was
2028: used.
2029: * Modify UNIX versions so that the wrapper binary will now force its working
2030: directory to the location of the wrapper binary. This change was made to
2031: make the UNIX version work the same way as the Windows version and thus make
2032: configuration files that modify their working directory work correctly on
2033: a cross platform basis. Users which have been using the scripts supplied
2034: with the Wrapper should not encounter any problems. Other users may require
2035: slight changes to their configuration file to deal with the new way that the
2036: Wrapper deals with its initial working directory.
2037: * Add a new method WrapperManager.getProperties() which makes it possible to
2038: access any property in the Wrapper configuration file.
2039: * Fix a problem where TERM signals were not being correctly ignored by the
2040: JVM process on UNIX platforms even if the wrapper.ignore_signals property
2041: was set to true. Earlier versions of the Wrapper would generate a
2042: WRAPPER_CTRL_SHUTDOWN_EVENT when a TERM signal was received. On Windows
2043: that signal should never be ignored. To resolve this a new
2044: WRAPPER_CTRL_TERM_EVENT was added making it possible to selectively ignore
2045: the TERM signals. This change may affect user implementations of the
2046: WrapperListener.controlEvent() method. Bug #1086344.
2047: * The Windows version has a feature which allows the user to immediately kill
2048: the Wrapper and its Java application without waiting for a clean shutdown
2049: by pressing CTRL-C twice. Windows sends the CTRL-C signal to both the
2050: Wrapper and Java processes. Due to a rare timing problem, it was possible
2051: for the Java process to get the signal first and initialize a shutdown
2052: before the Wrapper could respond to the signal. In this case the Wrapper
2053: was interpreting this as a second CTRL-C signal even though the user only
2054: pressed it once.
2055: * If the wrapper.anchorfile or wrapper.pidfile properties are used on Windows
2056: they were being unintentionally deleted if the -t, -p, -i, or -r commands
2057: were used while another Wrapper instance was running. In the case of the
2058: anchor file, this would result in the Wrapper being shutdown unintentionally.
2059: This was not an issue on non-Windows versions. Bug #1108517.
2060: * Fix a security problem where the value of the wrapper.ntservice.account
2061: and wrapper.ntservice.password properties were being stored in plain text
2062: within the registry if they were specified on the command line when
2063: installing the Wrapper as a Windows service. Bug #1110183.
2064: * Add a pair of properties wrapper.ntservice.password.prompt and
2065: wrapper.ntservice.password.prompt.mask which which will cause the Wrapper
2066: to prompt the user for an account password when it is being installed as
2067: an NT service.
2068: * Added system properties to make it possible to configure whether or not
2069: the WrapperSimpleApp and WrapperStartStopApp helper classes will wait
2070: for the configured main methods to complete before reporting that the
2071: application has started. See the javadocs for these classes for more
2072: details.
2073: * Modify the HP-UX build so that it now dynamically links with the pthread
2074: library. This was to make the binaries work with HP-UX 11.00. Thanks to
2075: Sun Kun Choi for the patch.
2076: * Add new wrapper.statusfile and wrapper.java.statusfile properties which can
2077: be used by external applications to monitor the internal state of the Wrapper
2078: or JVM at any given time. These will not be useful to most users.
2079: * Add a new wrapper.commandfile property which can be used by external
2080: applications to control the Wrapper and its JVM.
2081: * Add a new wrapper.java.idfile property which can be used by external
2082: applications to monitor the internal state of the JVM at any given time.
2083: * Add a warning on startup if the JVM has a SecurityManager set but the
2084: wrapper.jar has not been granted the AllPermissions permission. Failure
2085: to do so will almost certainly lead to the Wrapper throwing a number of
2086: errors and this helps to point out the cause.
2087: * Add a security model which protects most Wrapper method calls when a
2088: SecurityManager has been registered. See the Security Model section
2089: for more details.
2090: * Add a new pair of batch files which can be used to start and stop the
2091: Wrapper when installed as a service.
2092: * Add new -q and -qs commands to the Windows version of the Wrapper which
2093: make it possible to query the currently installed status of the service.
2094: * Fix a problem where the wrapper.java.library.path.append_system_path
2095: property was not working correctly on Windows when the system PATH
2096: contained quotes. Bug #1238726.
2097: * Modify the usage output of the Wrapper on all platforms so the Wrapper's
2098: version is now included. It was not previously possible to get the version
2099: of the Wrapper being used without launching a JVM.
2100: * Add a pair of new methods WrapperManager.stopAndReturn() and
2101: WrapperManager.restartAndReturn() which make it possible for code to
2102: stop or restart the JVM and then continue until the JVM is shutdown.
2103: This can be useful for shutdowns initiated within places like servlets,
2104: whose operation is expected to complete.
2105: * Fix a problem on UNIX where the child JVM was sometimes leaving around
2106: zombie processes after a restart. The SIGCHLD signal was not being handled
2107: correctly. Thanks to Traun Leyden for the patch. Bug #1291201.
2108: * Implement the ability to catch control events using the WrapperEventLisener.
2109: Feature Request #836975.
2110: * Add new wrapper.jvm.port, wrapper.jvm.port.min, and wrapper.jvm.port.max
2111: properties which make it possible to control the port the JVM uses to open
2112: a connection back to the JVM. The Wrapper uses to leave this up to the
2113: OS, but some users were having problems with the default conflicting with
2114: other ports.
2115: * Switch from using ftime() to gettimeofday() on UNIX platforms to work around
2116: a problem where the Wrapper would not run on new versions of OSX because
2117: they deprecated the ftime() function call. Thanks for the patch by
2118: Michael Macaluso. Bug #1313162.
2119: * Remove the shutdown timeout from the UNIX shell script. It is not needed
2120: and can cause a zombie JVM if the wrapper's internal shutdown timeout was
2121: longer than that of the shell script.
2122: * Add the ability to specify integer property values in base 8 or 16 in
2123: addition to base 10. Base 8 values start with a '0' and base 16 values
2124: start with a '0x'.
2125: * Make it possible to set the umask on all files created by the Wrapper
2126: as well as the default umask of files created by the JVM. Added new
2127: wrapper.umask, wrapper.java.umask, wrapper.pidfile.umask,
2128: wrapper.lockfile.umask, wrapper.java.pidfile.umask,
2129: wrapper.java.idfile.umask, wrapper.statusfile.umask,
2130: wrapper.java.statusfile.umask, wrapper.anchorfile.umask, and
2131: wrapper.logfile.umask properties.
2132: * Improve the message when the native library can not be loaded to make mention
2133: of the possibility of a 32/64 bit mismatch.
2134: * Add a new wrapper.monitor_thread_count property which makes it possible to
2135: disable the Wrapper's counting of non-daemon threads and thus the shutting
2136: down of the JVM when they have all completed.
2137: * Add support for BELOW_NORMAL and ABOVE_NORMAL options to the
2138: wrapper.ntservice.process_priority property. Feature Request #1373922.
2139: * Ignore '#' characters which are included within double quotes in the value
2140: of a property in the configuration file. Unquoted values must be escaped
2141: with a second '#' characters or it will be interpreted as a comment.
2142: * Display the Wrapper banner in the JVM earlier so that it is displayed
2143: even where there are startup errors.
2144: * Modify the WrapperSimpleApp and WrapperStartStopApp classes so that the
2145: WrapperManager is always initialized immediately. This makes the output
2146: clearer in the event of startup errors.
2147: * Fix a problem where the Windows ServiceManager was not correctly reporting
2148: a startup error if a service failed on startup. The service was being
2149: reported as having started even though it failed to start.
2150: * Fix a problem on UNIX versions where the Wrapper would go into a recursive
2151: state of attempting to launch the JVM from failed child processes if there
2152: was any problems executing the configured java process.
2153: * Rework the way the RUN_AS_USER setting in the UNIX shell script works so
2154: the specified user is now set regardless of the command being executed.
2155: To make sure the user never has to enter the password twice when running
2156: the script, it now recurses after changing the user. The script then
2157: runs entirely as the configured user.
2158: * Improve the message that is displayed when attempting to start, stop, or
2159: remove a windows service which is not installed.
2160: * Add new wrapper.lockfile property which makes it possible to specify a
2161: lock file containing a pid.
2162: * Modified the sh script so it now creates a lock file on startup in the
2163: /var/lock/subsys directory if it exists. This is needed by fedora systems
2164: on shutdown.
2165: * Store javadocs in tar distibutions in a nested tar file to avoid problems
2166: with long filenames in some tar distributions.
2167: * Fix a problem with the WrapperSimpleApp and WrapperStartStopApp helper
2168: classes where on heavily loaded systems it was possible for the Wrapper
2169: to get a running thread count of 0 and shutdown before the main thread
2170: had a chance to be started.
2171: * Add a new wrapper.thread_count_delay property which will force the
2172: WrapperManager to wait the specified number of seconds before it begins
2173: to check the number of running threads.
2174: * Fix a problem where the wrapper.java.library.path.append_system_path
2175: property was appending the PATH rather than the LD_LIBRARY_PATH environment
2176: variable on Unix systems. PATH is correct for Windows systems.
2177: * Add a new wrapper.logfile.rollmode property which makes it possible to
2178: control how and when the logfile is rolled. Feature Requests #864463,
2179: #1085097, and #1085850.
2180: * Fix a problem on Linux where the test for the status of the Java child
2181: process would sometimes fail causing the Wrapper to shutdown with the
2182: error "Critical error: wait for JVM process failed (No child processes)"
2183: rather than restart the child JVM. Users who encountered this problem
2184: found it easy to reproduce, but it only happened on some systems.
2185: * Modify the way the UNIX shell script tests for the existence of a process
2186: matching the pid in an existing pid file. It now verifies the process
2187: command as well as the pid to fix a system reboot problem where a stale
2188: pid has been reused by another application, making the script think the
2189: wrapper was already running.
2190: * Add support for the GNU libjcj JVM. Like JRocket, it requires slightly
2191: different thread counting.
2192: * Add support for Linux 64-bit PPC and Solaris 32-bit x86 versions.
2193: * Add a new set.default.ENV syntax to the configuration file making it
2194: possible to environment variable values which do not overwrite existing
2195: values, ie. to specify a default value.
2196: * Added a new wrapper.console.flush property which forces the wrapper to
2197: explicitly flush stdout after each line of log output.
2198: * Change the error shown when the JVM shuts down prematurely during a
2199: shutdown to a warning message.
2200: * Fix a problem where the Wrapper would show the following error message
2201: if user code called System.exit from within the WrapperListener.stop
2202: callback method. This would happen if the stop class's main method
2203: registered with the WrapperStartStopApp called System.exit.
2204: "JVM exited unexpectedly while stopping the application."
2205: Bug #945976.
2206: * Add a new wrapper.syslog.ident property which makes it possible to
2207: specify the identity used in syslog entries on UNIX. This was possible
2208: in older versions but was set using the wrapper.ntservice.name property.
2209: Bug #1432855.
2210: * Add support for MacOSX Universal Binary distributions.
2211: * Add support for Delta Pack distributions. This is a distribution that
2212: contains the binaries of multiple platforms.
2213:
2214: 3.1.2
2215: * Modify the way boolean system properties are resolved by the WrapperManager
2216: so it is now possible to set them to true or false rather than assuming they
2217: are true if set.
2218: * Fix a problem where some localized error messages were not having their
2219: tokens replaced correctly.
2220: * Fix a problem when using the WrapperStartStopApp helper class. The usage
2221: text was incorrectly being displayed in the console if an exception was
2222: thrown while executing the main method of the configured stop class. This
2223: did not change the functionality of the application, but it did cause some
2224: confusion.
2225: * Fix a problem on Windows where a library path or class path which ended in
2226: a backslash was preventing the Wrapper from launching the JVM. The Windows
2227: OS was using the backslash to escape the quote used to close the path. The
2228: fix was to add a second backslash where needed.
2229: * Added a new wrapper.java.command.loglevel property which makes it possible
2230: to control the log level of the generated java command.
2231: * Add support for escaped quotes when stripping quotes on UNIX for the
2232: wrapper.java.additional.<n> and wrapper.app.parameter.<n> properties.
2233: * Change the default value of wrapper.jvm_exit.timeout from 5 to 15 seconds.
2234: The old default was too fast for some applications which take a while to
2235: exit. Applications which were exiting promptly will not see any difference.
2236: * Fix a problem where the JVM would restart at certain times when using the
2237: system time based timer due to an overflow error. This problem was
2238: introduced in 3.1.0. Due to a separate bug in 3.1.0, the Wrapper would
2239: shutdown rather than simply restarting the JVM as was happening in 3.1.1.
2240: The last restart happened on Aug 21, 2004. It will next occur Oct 10, 2004
2241: and repeat at regular intervals. There are no problems when using the new
2242: Tick based timer. Bug #1014405.
2243: * Correct the wrapper.logfile.maxsize property so that a a kilobyte is now 1024
2244: rather than 1000, and a megabyte is a megabyte. We aren't a hard drive
2245: manufacturer after all.
2246: * Add try-catch blocks around all thread entry points in the Windows version.
2247: This has always been done in the main function, but these blocks will help
2248: to narrow down the cause of problems should they ever be encountered in
2249: control or service handlers.
2250: * Centralize shutdown code on UNIX version in an appExit method as was already
2251: being done for Windows versions.
2252: * Fix a problem where the build.sh was not correctly using the included ant
2253: if an ANT_HOME environment variable was defined.
2254: * Add a new wrapper.single_invocation property which will prevent multiple
2255: invocations of an application from being started on Windows platforms.
2256: The shell script handles this on UNIX platforms. Feature Request #889123.
2257: * Fix a crash problem introduced in 3.1.1, caused by a pair of uninitialized
2258: pointers. The crash was possible on all platforms but would only happen
2259: if the Wrapper was started without any arguments. It would not affect
2260: users running the Wrapper normally. Bug #1018481.
2261: * Fix a problem with the run as user feature of the shell script on Solaris.
2262: Needed to be using /usr/xpg4/bin/id rather than /usr/bin/in if available.
2263: Bug #1024008.
2264: * Replace calls to usleep with nanosleep on platforms where it is available.
2265: This was to fix an occasional hang on a specific Solaris machine. It would
2266: occasionally hang on calls to usleep. From research, it appears that usleep
2267: has problems when signals are encountered while sleeping. Still testing
2268: whether or not this change solved the problem.
2269: * Upgrade the version of Ant included with source releases to 1.6.2 to fix
2270: some problems generating jni headers when building with Java 1.4.2.
2271: * Upgrade the version of Cocoon included with source releases to 2.0.4 to
2272: fix some problems generating documentation using Java 1.4.2.
2273: * Display a warning if the exit status of a JVM process ever returns the
2274: STILL_ACTIVE status on Windows. There was no known problem here, just
2275: noticed it while looking over the code.
2276: * Display a descriptive error message on Windows if the the JVM process crashes
2277: due to an uncaught exception in native JVM code.
2278: * Add a test for invalid jvm arguments set using the wrapper.java.additional.<n>
2279: properties. Invalid arguments could cause the Wrapper startup to fail in
2280: non obvious ways if they are mistaken by the JVM as the main class.
2281:
2282: 3.1.1
2283: * Modified the way libwrapper.so is built on Solaris and Linux so that it
2284: no longer statically links its required libraries.
2285: * Fix a file handle leak when calling WrapperManager.getUser or
2286: WrapperManager.getInteractiveUser on Windows platforms.
2287: * Fix a problem introduced in 3.1.0 where the JVM would not be restarted
2288: correctly if it quit after a ping timeout to let the Wrapper resynch and
2289: restart it.
2290: * Fix a problem where CTRL-C was not being handled correctly if the console
2291: was configured to be shown when running as an NT service.
2292: * Fix a problem where signals fired at UNIX versions of the wrapper were
2293: not being handled correctly when the tick timer was being used.
2294: * Fix a synchronization problem in the logging code which would
2295: occassionally cause the Wrapper to crash with an Access Violation.
2296: The problem was only encountered when the tick timer was enabled,
2297: and was only seen on multi-CPU systems. Bug #949877.
2298: * Fix a problem when using the tick timer where the Wrapper would sometimes
2299: exit on startup due to an uncaught SIGALRM. Only reported on multi-CPU
2300: Solaris systems.
2301: * Fix a problem where the Wrapper would sometimes hang on shutdown if
2302: another thread called System.exit while the Wrapper was shutting down.
2303: Bug #955248.
2304: * Fix a problem introduced in 3.1.0 where a very very large CPU timeout
2305: warning message was being displayed if the system time was set back
2306: while using the default system timer.
2307: * Added a new property, wrapper.anchorfile, which makes it possible to
2308: cause the Wrapper to shutdown by deleting an anchor file. The UNIX sh
2309: script has been modified to optionally make use of this feature.
2310: * Add a debug message at startup which makes it clear which timer is being
2311: used.
2312: * A Windows user reported that using forward slashes in the path the log
2313: file was failing. Avoid this problem by always converting '/' to '\'
2314: in the wrapper.logfile property on Windows.
2315: * Fix a problem where it was not possible disable the wrapper log file as
2316: documented in the wrapper.logfile property. Most likely broken way back
2317: in version 2.2.5.
2318: * Add some additional error checks after calls to control the pipe between
2319: the JVM and Wrapper as well as improving the messages around other socket
2320: related error messages.
2321: * Fix a problem on some HP-UX systems were not working correctly because
2322: the EAGAIN and EWOULDBLOCK constants are not equal with some compilers.
2323: * Change some of the defaults in the src/conf/wrapper.conf.in file which
2324: ships with the Wrapper to avoid confusion with new users.
2325: * Rewrote the routine which reads and logs console output from the JVM
2326: for Windows versions. Internal buffers are now scaled dynamically,
2327: fixing a problem where long lines were being wrapped at 1024 characters.
2328: This rewrite also resulted in a 4 fold increase in speed when the JVM is
2329: sending large quantities of output to the console.
2330: * Increase debug output on UNIX platforms when a signal is caught. When
2331: possible, information about where the signal came from is now logged.
2332: * Modified the way log output from within signal handlers is handled so it
2333: is now queued and then logged by the main event loop.
2334: * Back out a 3.1.0 change where a JVM that had failed to exit cleanly was
2335: sent a SIGTERM prior to a SIGKILL. The SIGTERM made no difference and
2336: slowed down the forced shutdown. A modification to the event loop made
2337: the functionality more difficult to implement.
2338: * Add the ability to set the user that the Wrapper and its JVM will run as
2339: from within the sh script on UNIX platforms.
2340: * Add an icon resource to the Wrapper binary on Windows versions.
2341: * Fix a typo in the UNIX sh script which caused an extra slash to be included
2342: in the path of the pid file. Was not causing any known problems.
2343: * Added support for 64-bit HP-UX. Big thanks to Venkatesh Sellappa for
2344: supplying the patch.
2345: * Fix a deadlock problem introduced in 3.1.0 with some FreeBSD systems. Not
2346: all users were experiencing it, but those who did were able to reliably
2347: reproduce the problem. The problem appears to have been caused by
2348: FreeBSD bug #kern/64313.
2349: * Make the signal handling variables in the wrapper native library volatile.
2350: Directly this was to fix a compiler warning on HP-UX64 systems but it
2351: should also make the calls more efficient.
2352:
2353: 3.1.0
2354: * The license was revised for this version to include a copyright omission.
2355: This change is to be retroactively applied to all versions of the Java
2356: Service Wrapper starting with version 3.0.0. The changes should have
2357: no effect on users.
2358: * The Online documentation and web site were both reworked. The logo has
2359: been updated so that Duke is no longer used. The new online site now
2360: has the ability for users to logon and append comments to any page.
2361: * Added a new batch file which accepts commands like the UNIX shell script.
2362: The new file is offered as an alternative to the default batch files, and
2363: can be found at src/bin/AppCommand.bat.in. Thanks to Mike Castle for
2364: donating the new script.
2365: * The Windows version of the Wrapper was not correctly registering that it
2366: would accept SHUTDOWN messages when running as a service. The Wrapper
2367: was getting the message anyway so this should not change functionality.
2368: Thanks to Jason Tishler for noticing this and sending in a patch.
2369: * Add a new property, wrapper.native_library, which can be used to specify
2370: the base name of the native library which is loaded by the WrapperManager
2371: class.
2372: * Modify the WrapperManager class so it now stores references to System.out
2373: and System.err on initialization and always writes to those stored streams.
2374: This makes sure that all Wrapper console output always goes to the
2375: wrapper.log file even if user code overrides those streams with calls to
2376: System.setOut and System.setErr. This was necessary to prevent deadlocks
2377: in such user code from affecting the functionality of the Wrapper.
2378: * Fixed a problem where some environment variables where not being correctly
2379: loaded from the system registry when running as an NT service. Big thanks
2380: to Eric Smith for tracking this down and submitting a patch. It turns out
2381: that the putenv function was not being used correctly.
2382: * Modified the way the wrapper.conf file is loaded so it will now read the
2383: contents correctly even if the line feeds in the file are incorrect for
2384: the current platform. Windows line feeds had been causing problems when
2385: used on UNIX platforms. Feature Request #829896.
2386: * Added a new property, wrapper.ntservice.console, which allows a console to
2387: be displayed when running as an NT service.
2388: * Fixed a problem where the request thread dump on failed JVM exit feature
2389: had never worked when running as an NT service. Bug #831775.
2390: * Add a new property, wrapper.console.title, which makes it possible to set
2391: the title of the console in which the Wrapper is currently running. This
2392: currently only works on Windows platforms.
2393: * Added a new method, setConsoleTitle, to the WrapperManager class which
2394: enables the application to dynamically set the console title. Like the
2395: wrapper.console.title property, this only works on Windows platforms.
2396: * Improved the algorithm of the request thread dump on failed JVM exit feature
2397: so that extremely large thread dumps will not be truncated when the JVM
2398: is killed.
2399: * Fix a problem where CTRL-C was being ignored by the WrapperManager if a
2400: WrapperListener is never registered. This is not possible if the Wrapper
2401: is being used correctly but never the less a user did come across it.
2402: * Add some additional debug output to help identify the cause of problems
2403: loading the native library.
2404: * The WrapperManager class now checks to make sure that its current version
2405: matches the version of the native library and Wrapper. If there are any
2406: discrepancies found then appropriate warnings will be displayed, but the
2407: Application will still be allowed to start. This was added to make obvious
2408: the cause of problems resulting from mismatched versions.
2409: * Added a new property wrapper.use_system_time system time. By setting this
2410: property to false, the Wrapper will start using a new experimental timer
2411: which uses a background thread to manage time rather than the system time.
2412: This has a number of advantages over using the system time and should give
2413: most users even more reliable behavior when the system is under high load
2414: or there are changes being made to the system time. The timer is very
2415: critical to the operation of the Wrapper so the old behavior is left as
2416: the default for the time being until this feature has had the chance to be
2417: "time" tested. If all goes well then this will be enabled as the default
2418: in a future version of the Wrapper.
2419: A pair of related properties, wrapper.timer_fast_threshold and
2420: wrapper.timer_slow_threshold were also added to aid in debugging.
2421: * Rework the logging code so it is now thread safe. The addition of the
2422: timer thread means that there is now more than a single thread accessing
2423: that code. This was causing problems as the two threads tried to use the
2424: same buffers. As part of this change, a new format variable 'D' was added
2425: to display the thread which is doing the logging.
2426: * Fix a problem where a thread dump would be invoked if the request thread
2427: dump on failed JVM exit was enabled and the user forced an immediate
2428: shutdown by pressing CTRL-C more than once.
2429: * Add getUser and getInteractiveUser methods to the WrapperManager class to
2430: make it possible for user code to query information about the user running
2431: Wrapper or the user who is interacting with the Wrapper and its JVM.
2432: Feature Request #812175.
2433: * The Wrapper will now always exit with the exit code used to terminate the JVM
2434: whether System.exit is used or WrapperManager.stop. When running as an NT
2435: service the Wrapper now correctly returns the correct exit code to the
2436: service manager so failure recovery tools should now work correctly.
2437: Feature Request #852491.
2438: * Add a status command to the UNIX shell script which can be used to find out
2439: whether or not the wrapper is currently running. Patch submitted by
2440: Joseph Benavidez.
2441: * Modify the WrapperSimpleApp and WrapperStartStopApp so that the main method
2442: of a class is located even if it exists in a parent class rather than the
2443: class specified.
2444: * To make debugging classpath problems easier, the Wrapper now verifies all
2445: classpath entries before launching a JVM and logs debug level warnings for
2446: any entries that do not exist.
2447: * Fix a problem where it was possible to define a zero length filter that would
2448: trigger on any output.
2449: * Add some additional debug output to make it easier to debug startup,
2450: shutdown and restart problems.
2451: * Modify the way the Wrapper forcibly kills a frozen JVM on UNIX platforms so
2452: that it now sends a SIGTERM, waits up to 5 seconds, then sends a SIGKILL.
2453: * Add a new wrapper.java.library.path.append_system_path property which will
2454: cause the Wrapper to append the system path to the generated library path.
2455: Feature Request #917902.
2456: * Fix a problem where spaces around the '=' character of a property definition
2457: were rendering the property invisible to the Wrapper. Bug #916001.
2458: * Fix a problem where the first ping timeout after the JVM was started was
2459: still hard coded at 30 seconds. This was causing a combination of large
2460: values of wrapper.ping.interval and wrapper.ping.timeout to fail.
2461: * Fix a problem where the JVM would fail to shutdown cleanly if the Wrapper
2462: was asked to stop too soon after launching a JVM. This was leading to the
2463: JVM being killed after the shutdown timeout expired. Bug #917281.
2464: * Added an adviser which will print out explanatory messages to the console
2465: and wrapper log file when the Wrapper encounters a commonly made
2466: configuration mistake. This is designed to cut down on support requests
2467: by new users. Can be disabled using the wrapper.adviser property.
2468: * The bash script and the realpath utility have been deprecated since version
2469: 3.0.3. They have been removed in this release. The sh script is recommended
2470: on all UNIX platforms, and the realpath utility which was used by pre-3.0.3
2471: bash and sh scripts has not been used since.
2472: * Add the wrapper.startup.delay property along with console and service
2473: specific variants which make it possible to configure a delay between the
2474: Wrapper being launched and the first JVM being launched.
2475: * Promote the wrapper.debug property back from being "deprecated". It has
2476: continued to be useful and deserved documentation and official status.
2477: * Add wrapper.on_exit.<n> properties to control what happens when a exits
2478: based on the exit code.
2479: * Modify the way calls to System.in.read() are handled so that they now block
2480: rather than throwing an exception. Currently, System.in can not be used with
2481: the Wrapper because of the way I/O is passed between the Wrapper and JVM.
2482: * Modified the Windows batch files to fix a problem where the path to the
2483: Wrapper.exe contained more than one "/bin". The new batch files are much
2484: simpler and should be easier to customize if needed. Bug #925308.
2485: * Modified the wrapper.java.initmemory and wrapper.java.maxmemory properties
2486: so that they now default to a value of 0 which causes the -Xms and -Xmx
2487: parameters to be omitted from the command used to launch Java. This
2488: will cause the JVM to use its own default values and also makes it possible
2489: to specify the memory parameters using the wrapper.java.additional.<n>
2490: properties.
2491: * Added a pair of environment variables, WRAPPER_FILE_SEPARATOR and
2492: WRAPPER_PATH_SEPARATOR, whose values are set to either '/' and ':' or
2493: '\' and ';' on startup. They can be used in the wrapper.conf file
2494: to construct platform independent property values.
2495: * Add a new wrapper.working.dir property which makes if possible to change
2496: the Wrapper and JVM's working directory to a location other than the
2497: location of the Wrapper binary. Feature Request #738160.
2498:
2499: 3.0.5
2500: * Added support for SGI Irix. Big thanks to Andreas Wendt for supplying the
2501: patch.
2502: * Due to a bug in the build, the native library was not included in the 3.0.3
2503: or 3.0.4 binary releases for OSX, building from source was working correctly.
2504: This has been fixed and the build greatly simplified to avoid such problems
2505: in the future. Bug #791755.
2506: * Changed the default location of the pid file generated by the sh script to
2507: exist in the same directory as the sh script rather than in the /var/run.
2508: This can be changed by setting the PIDDIR variable in the sh script used to
2509: launch the Wrapper.
2510: * Added support for the wrapper.pidfile property on the Windows platform.
2511: * Added the wrapper.java.pidfile property which will cause the pid of the
2512: java process to be written to a specified file.
2513: (WINDOWS USERS) If you are using a wrapper.conf file that was created prior
2514: to version 3.0.0 of the Wrapper, then you may have this property defined in
2515: your configuration file. You will get an error on startup if the specified
2516: path does not exist.
2517: * Stop clearing the file creation mask when the Unix version of the Wrapper is
2518: run as a daemon process. The file creation mask will not be inherited from
2519: the process which launches the Wrapper. Bug #788849.
2520: * Modify the sh script so it works on Linux, then deprecate the bash script.
2521: This means that all Unix platforms can now use the same script to control
2522: the Wrapper. Thanks to Mike Castle for the patch. The bash script can still
2523: be found in the release, but it is deprecated and will be removed in a
2524: future version.
2525: * Modified the sh script so it is now possible to set the nice priority in the
2526: script configuration block.
2527: * Remove output to System.out in the WrapperManager.requestThreadDump() method.
2528: If some JVM threads were hung while accessing the System.out object,
2529: attempting to do a thread a dump would cause the calling thread to hang as
2530: well. Thanks to Thomas Hart for the patch.
2531: * Make it obvious in the log whether or not the Wrapper was started as a
2532: daemon process on UNIX systems.
2533: * Modify the way restarts requested from the JVM, or caused by a filter are
2534: handled. The Wrapper will no longer reset the restart count in either of
2535: these cases. If an application runs for longer than the
2536: wrapper.successful_invocation_time timeout then the count will still be
2537: reset back to 0.
2538: * Added a new wrapper.ignore_signals property which makes it possible to
2539: configure the Wrapper so it will ignore CTRL-C, HALT and INT signals.
2540: * Modify the WrapperManager.isLaunchedAsService() method on UNIX systems so it
2541: now returns true if the Wrapper was launched with the wrapper.daemonize flag
2542: set.
2543: * Added a pair of MBean interfaces which allow the Wrapper to be controlled
2544: using JMX. See the new JMX section in the documentation for details.
2545: Thanks to Sal Ingrilli for help with testing.
2546: * Modify the Windows build so the Wrapper.exe and Wrapper.dll files can now
2547: be built from Ant if MSVC is installed.
2548: * Added a new wrapper.ping.interval property which lets users control the
2549: frequency that the Wrapper pings the JVM. Feature Request #607768.
2550: * When a JVM refuses to shutdown, the Wrapper can be configured to request a
2551: thread dump using the wrapper.request_thread_dump_on_failed_jvm_exit
2552: property. The Wrapper was then waiting 1 second before the process was
2553: killed. This was not always long enough, resulting in a truncated thread
2554: dump. Increased the pause to 3 seconds. Feature Request #633761.
2555: * Fix a bug where wrapper.app.parameter.<n> and wrapper.java.additional.<n>
2556: properties declared from the Windows command line were not correctly
2557: handling spaces in their values. Support Request #802139.
2558:
2559: 3.0.4
2560: * Fix a problem on UNIX systems where requesting a second thread dump any time
2561: during the life of a single Wrapper process would cause the Wrapper and JVM
2562: to shutdown rather than perform the thread dump.
2563: * Fix a problem where a, user without permission, attempting to stop an
2564: application was able to delete the pid file even though they were unable
2565: to stop the application itself. This would make the scripts think that
2566: the application was stopped when was actually still running.
2567: * Fix a problem where an application was being killed prematurely if it took
2568: longer than 6 seconds to exit on its own. The scripts now make sure that
2569: an application always has enough time to shutdown cleanly.
2570: * Improve the debug output so that packet codes are now shown using a name
2571: rather than a raw number.
2572: * Reduce the frequency of "Waiting to stop..." messages displayed when removing
2573: an NT service that is currently running. Decreased frequency from once per
2574: second to once every five seconds.
2575: * Fix a minor problem where the hour in the date returned by
2576: WrapperInfo.getBuildTime() was not base 24.
2577: * Added -t and -p command line options to the Windows version of the Wrapper
2578: to sTart and stoP the Wrapper as an NT service. This can be used in place
2579: of "net start" and "net stop", which do not always work correctly when a
2580: service takes a long time to start up or shutdown. See the Launching Your
2581: Application (Win32) section for more details.
2582: * Add a new method WrapperManager.stopImmediate which will cause the JVM to
2583: exit immediately without calling any stop methods or shutdown hooks.
2584: * Add a new class, WrapperActionServer, which makes it easy to remotely control
2585: the Wrapper remotely by opening a socket and sending commands. See the
2586: javadocs of the class for more details.
2587: * Fix bug #744801. A Java GUI was not being displayed when the application was
2588: run in either console mode or as a service with wrapper.ntservice.interactive
2589: enabled. This problem was introduced in Version 3.0.0 when using 1.2.x or
2590: 1.3.x versions of Java. To use interactive services with 1.2.x or 1.3.x
2591: versions of java, please review the documentation for the
2592: wrapper.ntservice.interactive property.
2593: * Fix a problem where the JVM was not receiving CTRL-C and CTRL-CLOSE events
2594: when running under the Wrapper on Windows. This was not a problem in most
2595: cases as the Wrapper was taking care of the processing of the events. But
2596: the WrapperListener.controlEvent() method was not being called as documented.
2597: * Changed the way the WrapperSimpleApp and WrapperStartStopApp respond to
2598: control events so that the JVM will respond and call WrapperManager.stop()
2599: even when being controlled by the Wrapper.
2600: * Modified the suggested behavior of the WrapperListener.controlEvent() method.
2601: Users who have implemented the WrapperListener interface themselves should
2602: review the Javadocs. The changes are not required and applications will
2603: continue to function as they did before.
2604: * Added support for DEC OSF1 (Alpha). Big thanks to Andreas Wendt for
2605: supplying the patch.
2606: * Fix a problem where the sh and bash scripts were failing if the path to the
2607: script contained spaces.
2608: * Fix a problem where the JVM would sometimes hang when trying to shutdown if
2609: the wrapper.key parameter was passed to the JVM while not being controlled
2610: by the Wrapper. This would happen if a user copied the command from the
2611: Wrapper's debug output and attempted to run it as is without first removing
2612: the wrapper.key parameter.
2613: * Implement the ability to specify an NT service's load order group in response
2614: to feature request #764143. See the javadocs for the new
2615: wrapper.ntservice.load_order_group property for details.
2616: * Improve the error message displayed when the NT EventLog is full in response
2617: to feature request #643617. The EventLog output will now be disabled if any
2618: errors are encountered while logging events. This prevents the error from
2619: repeating.
2620: * Improve the error message displayed on Windows when the configured Java
2621: command can not be executed or does not exist.
2622: * Fix a problem where the Wrapper was leaving a pipe unclosed each time the JVM
2623: was restarted on all UNIX platforms. This was causing the Wrapper to run out
2624: of file handles. Bug #767267, discovered and patched by David Wong.
2625: * Fix a problem where the '#' character, which signifies a comment, could not
2626: be included in property values. A double hash, '##' will now resolve into a
2627: '#' within the property value. Bug #777303.
2628: * Added support for FreeBSD. Big thanks to Alphonse Bendt for supplying the
2629: patch.
2630: * Make the wrapper.port property optional.
2631: * Changed the way environment variables are loaded from the registry on Windows
2632: platforms so users will no longer get warning messages about not being able
2633: to handle very large environment variables. Prior versions could only handle
2634: environment variables whose expanded value was less than 2048 characters in
2635: length.
2636: * Fix a problem on UNIX platforms where a shell used to start the Wrapper
2637: running as a detached process would hang when the user attempted to exit
2638: the shell. Thanks to Mike Castle for this patch.
2639:
2640: 3.0.3
2641: * Added support for Mac OS X. Big thanks to Andy Barnett for supplying the
2642: patch.
2643: * Fix a segmentation fault on UNIX systems when the first console output
2644: from the JVM was an empty line. Thanks to Mike Castle for finding this.
2645: * Fix a problem where a 0 length malloc was being called if there were no
2646: configured filters. This was fine on most platforms but caused a crash
2647: on MAC OS X.
2648: * Rework the initialization of the bash and sh scripts so that they will
2649: work correctly when referenced as symbolic links. Thanks go out to Richard
2650: Emberson for the code to resolve symbolic links.
2651: * Deprecated the realpath binary in the *NIX distributions as it is no longer
2652: used by the bash or sh scripts. It is being left in for now so as not to
2653: break the build scripts of other projects, but it will be removed after a
2654: couple more releases.
2655: * Added a test to make sure that wrapper.ntservice.interactive is not set to
2656: TRUE when an account is specified using wrapper.ntservice.account.
2657:
2658: 3.0.2
2659: * Modified the sh and bash scripts so that console log output is disabled by
2660: default when the scripts are launched with the 'start' action. Running with
2661: the 'console' action will still send output to the console. Logging to the
2662: file is still enabled.
2663: * Modified the wrapper.ping.timeout property so it also controls the ping
2664: timeout within the JVM. Before the timeout on responses to the Wrapper
2665: could be controlled, but the ping timeout within the JVM was hardcoded to
2666: 30 seconds.
2667: * In the last release, some work was done to avoid false timeouts caused by
2668: large quantities of output. On some heavily loaded systems, timeouts were
2669: still being encountered. Rather than reading up to 50 lines of input, the
2670: code will now read for a maximum of 250ms before returning to give the main
2671: event loop more cycles.
2672: * Fix a problem where the values of environment variables set in the
2673: configuration file were not correct when those values included references
2674: to other environment variables.
2675: * Fix a potential buffer overflow problem if configuration properties
2676: referenced extremely large environment variables.
2677: * Fix a potential problem where the inability to expand very large environment
2678: variables would have led to an access violation when run as an NT service.
2679: * Add some extra checks in the event where the native library can not be loaded
2680: so that the WrapperManager can differentiate between the library missing and
2681: not being readable due to permission problems.
2682: * Remove the wrapper.ntservice.process_priority from the default wrapper.conf
2683: because its use can produce unexpected results if used improperly. Please
2684: see the property documentation for details.
2685: * Fix a problem where environment variables in the registry which had no value
2686: were causing the Wrapper to crash with an access violation. This was
2687: introduced in version 3.0.0 with the feature to load environment variables
2688: from the registry. The offending registry entry was WV_GATEWAY_CFG which
2689: appears to be related to Oracle.
2690:
2691: 3.0.1
2692: * Fix a problem with the wrapper.disable_shutdown_hook. Due to a typo in the
2693: source, the property was being ignored. This was broken in the 3.0.0
2694: release.
2695: * Fix a problem with the HP-UX release build reported by Ashish Gawarikar.
2696: * Add the ability to set environment variables from within the configuration
2697: file or from the command line.
2698: * Fix a problem on HP-UX and AIX machines where the stop() function in the
2699: shell scripts was causing a syntax error due to a conflict with a like named
2700: shell command on those platforms. This appears to be an issue with the
2701: Korn shell on all platforms.
2702: * Fix a problem where very heavy output from the JVM can cause the Wrapper to
2703: give a false timeout. The Wrapper now only reads 50 lines of input at a time
2704: to guarantee that the Wrapper's event loop always gets cycles.
2705: * Fix a problem on UNIX versions where extra line breaks would sometimes be
2706: added to the logged output when there was large amounts of output being
2707: sent from the JVM.
2708: * Fix a problem where a large number of calls to WrapperManager.log()
2709: immediately before the JVM exits could lead to the Wrapper incorrectly
2710: reporting that the JVM exited unexpectedly.
2711:
2712: 3.0.0
2713: * Deprecated the com.silveregg.wrapper package in favor of
2714: org.tanukisoftware.wrapper. The classes and interfaces in the silveregg
2715: package will continue to function, but migration to the new package should
2716: be done when possible. See the project history for details.
2717: * On Windows systems change any forward slashes in the wrapper.java.command
2718: property to back slashes. Some users had reported having problems on
2719: Windows XP.
2720: * Implemented feature request #633178. Added WrapperManager.requestThreadDump()
2721: to force the current JVM to immediately perform a thread dump.
2722: * Fixed bug where wrapper.logfile.maxsize was being set to 0 if the 'k' or 'm'
2723: unit was omitted.
2724: * Add the ability to specify an account name and password when installing an
2725: NT service.
2726: * Add a property, wrapper.ntservice.interactive, which makes it possible to
2727: control whether or not the Java process can gain access to the desktop while
2728: it is running as an NT service.
2729: * Add limited support for 1.2.x versions of Java. Shutdown hooks are
2730: supported until Java 1.3 so those functions will be disabled. If the
2731: application displays a GUI then Java 1.3 should be used as the GUI can not
2732: currently be displayed when using Java 1.2.x.
2733: * Made it possible to use the wrapper.pidfile property on all *nix platforms.
2734: Please notice that the property has been removed from the default
2735: wrapper.conf file. The property is not needed when the wrapper is launched
2736: with the bash shell script. The sh shell script will set the wrapper.pidfile
2737: when the wrapper is launched. If either of the scripts provided with the
2738: Wrapper distribution are used then the wrapper.pidfile should always be
2739: removed from your wrapper.conf file.
2740: * Added a new wrapper.daemonize property which, when set, will form the wrapper
2741: process to be a detached non-session group leader. This makes it possible to
2742: launch the wrapper in such a way that it will not be terminated when the user
2743: launching the process logs out. This had been a problem on Solaris systems
2744: when using the sh shell. The default sh and bash scripts both make use of
2745: this in the default. Please update your scripts for use with this version.
2746: Thanks to Rajiv Subrahmanyam for the patch.
2747: * Fix a problem where the Wrapper was incorrectly counting the number of
2748: non-daemon threads in BEA's JRockit Virtual Machine. This was causing the
2749: application to shutdown when the non-daemon thread count dropped to 1.
2750: * Added support for building the wrapper on AIX and HP-UX systems. Thanks for
2751: the patches involved go out to Ashish Gawarikar and William Lee.
2752: * Implement feature request #653131 to force the JVM to immediately exit when
2753: the user presses CTRL-C multiple times.
2754: * Added a 'console' action to the bash and sh scripts to make it possible to
2755: launch the Wrapper in the current shell process. The 'start' task will launch
2756: the Wrapper as a spawned daemon process.
2757: * Fixed a problem where missing environment variables specified in classpath
2758: or library path properties were not being handled correctly.
2759: * Implemented feature request #676599 to enable the filtering of JVM output to
2760: trigger JVM restarts or Wrapper shutdowns. See the new
2761: wrapper.filter.trigger.n and wrapper.filter.action.n properties.
2762: * Modify the Win32 version of the Wrapper so that Environment Variables are
2763: always read from the system registry when the Wrapper is run as a service.
2764: By doing this, it makes it possible to change or add the system environment
2765: variables and have them take effect without having to first reboot the
2766: machine.
2767: * Implemented cascading configuration files.
2768: * Changed the default value for the wrapper.java.initmemory property to be 3Mb.
2769: The default on Windows and Linux JVMs is 2Mb, but the Solaris JVM requires
2770: a minimum of 3Mb. The minimum value accepted by the Wrapper was changed
2771: from 8Mb to 1Mb to make it possible to reduce the footprint of applications
2772: to what is possible without using the wrapper.
2773: * Improve the parsing of configuration files so that leading and trailing white
2774: space is now correctly trimmed. It is also now possible to have comments at
2775: the end of a line containing a property.
2776: * Modify the way exceptions thrown by an application's main method are
2777: presented to the user by the WrapperSimpleApp and WrapperStartStopApp so
2778: they no longer look like a problem with Wrapper configuration.
2779:
2780: 2.2.9
2781: * Added a new property, wrapperper.restart.delay, which allows the user to control
2782: the amount of time to pause between a JVM exiting and a new JVM being
2783: launched.
2784: * Fixed bug #611024. The Wrapper would sometimes fail to start if
2785: wrapper.max_failed_invocations is set to 1.
2786: * Fix a problem where the number of non-daemon threads was not being calculated
2787: in some cases.
2788: * Implemented feature request #491443. Environment variables referenced in the
2789: wrapper.conf file will now be evaluated as the file is loaded. The windows
2790: syntax for environment variables is used on all platforms to make them
2791: platform independent.
2792: * Fixed a problem where the wrapper.conf was being open with both read and
2793: write locks when a read lock is all that is needed. Made the wrapper fail
2794: on startup if another application held a read lock on the conf file.
2795: * Modified the message displayed when the native library could not be found,
2796: so that it is much more descriptive. Hopefully it will cut down on questions
2797: caused by configuration problems.
2798: * Implemented feature request #613539. Modified the wrapper.java.library.path
2799: to function like the wrapper.java.classpath.n properties so that multiple
2800: directories can be specified in the library path in a platform independent
2801: way. The old property is still supported, but deprecated.
2802: * Fix Bug #632215. The WrapperManager.isLaunchedAsService() method was always
2803: returning false, even when run as a service under Windows. On linux, the
2804: Wrapper is always run as a console app, so this method will always return
2805: false.
2806: * Improve the message thrown when user code attempts to access System.in from
2807: within a JVM being controlled by the Wrapper. System.in will not work
2808: because the JVM is a spawned process.
2809:
2810: 2.2.8
2811: * Fixed a compiler problem on Solaris some systems.
2812: * Added a new property, wrapper.cpu.timeout, which allows the user to control
2813: how much time without receiving any CPU the Wrapper will tolerate before
2814: displaying a warning message. The CPU timeout feature was added in 2.2.7
2815: but the default timeout of 10 seconds was not configurable.
2816: * The Wrapper was only allowing 5 seconds between the JVM informing the
2817: Wrapper that it was going to exit and the JVM process actually exiting.
2818: This would cause the Wrapper to terminate the process prematurely in
2819: cases where an application shutdown thread took longer than 5 seconds to
2820: complete. The Wrapper now allows wrapper.jvm_exit.timeout seconds for
2821: the JVM process to exit on its own before being forcibly terminated.
2822: * When there is a configuration problem or a resource is unavailable, a JVM
2823: will sometimes exit abnormally very shortly after being launched. This
2824: can lead the the JVM being infinitely restarted due to a simple class
2825: path misconfiguration. To work around this, the Wrapper has always had
2826: a hard limit of 5 restarts within a short period of time. If the JVM
2827: has been running for more than a few minutes, then the count was reset.
2828: In this version, a new property. wrapper.max_failed_invocations was added
2829: to allow the max value to be set. The time period which the JVM must
2830: now be running for the JVM launch to have been considered a success for
2831: restart purposes is set using the new wrapper.successful_invocation_time
2832: property.
2833: * The number of advanced properties which most users do not need has been
2834: increasing as the Wrapper has been made more and more flexible. This
2835: has been causing confusion in their usage by people who play with them
2836: without first reading the documentation. To solve this, the advanced
2837: properties were removed from the default configuration file. They still
2838: function. But users must now read to the advanced configuration
2839: documentation to learn about their existence. Added quite about to the
2840: descriptions of these properties to hopefully clear up any confusion
2841: about their usage.
2842: * When the JVM exits abnormally, the Wrapper will pause for a few seconds
2843: before starting another JVM. If the user pressed CTRL-C during this
2844: pause, a new JVM would still be launched. The new JVM was exiting
2845: immediately but it was a waste of time. The Wrapper now recognizes the
2846: event and aborts launching the new JVM.
2847: * Added a page to the documentation which shows inline javadocs. This
2848: will hopefully make it easier to navigate them as part of the full
2849: documentation set.
2850: * Added a new method to the WrapperManager which enables user code to
2851: log at any log level.
2852: * Added a new Helper class WrapperStartStopApp which allows users to easily
2853: integrate applications like Tomcat which use a separate class to stop
2854: the application.
2855: * Added a samples section to the documentation. Just includes Tomcat 4
2856: for now.
2857:
2858: 2.2.7
2859: * Fix a problem where the JVM was trying to reconnect the Wrapper as it was
2860: being shutdown. This was causing problems if the JVM was being restarted.
2861: * Added support for the system being suspended to RAM or disk. Also improved
2862: wrapper performance when a system is under 100% load. See the new example
2863: output in the example section.
2864: * Fix a problem where the log output was not being directed to a file called
2865: wrapper.log in the same directory as the Wrapper binary in the event that the
2866: configured wrapper log file could not be accessed.
2867: * Fix a problem where the Wrapper was not shutting down the JVM correctly when
2868: all non daemon threads completed. Normally a JVM will exit when all of its
2869: non daemon threads have completed so this was causing some problems.
2870: (Thanks to Jung Tamas)
2871: * Added the ability to set the priority of the Wrapper and its JVM when run
2872: as an NT service or console application. The same thing can be better
2873: achieved on Unix systems by using "nice" in the shell script used to launch
2874: the Wrapper. See the documentation for for details.
2875: * JVM information was not being displayed correctly when the Wrapper native
2876: library could not be loaded.
2877: * Added a new property to cause the wrapper to attempt to request a thread dump
2878: when the JVM does not exit on request.
2879: * Improved the documentation of the WrapperSimpleApp and WrapperListener
2880: classes.
2881: * Adding a new property wrapper.shutdown.timeout to allow the user to extend
2882: the length of time that an application is allowed to take shutting down.
2883: * Rework the way the shutdown process works so that System.exit will never be
2884: called before the stop method in WrapperListener has had a chance to complete.
2885: * Add a Restart button to the TestWrapper application.
2886: * Fix a problem on Unix versions where '%' characters in Java output would
2887: sometimes cause the wrapper to crash. Somehow missed getting this into the
2888: last release.
2889: * Added a test to make sure that WrapperManager.stop is not called recursively.
2890: * Added support for building under Windows XP. Prebuilt installations had
2891: already been working.
2892:
2893: 2.2.6
2894: * Fix a problem where '%' characters in Java output would sometimes cause the
2895: wrapper to crash. (Thanks to Frode Moe)
2896: * Added support for requesting a Java thread dump without shutting down the
2897: Java process.
2898: * Fixed a problem on windows where the java command was looking in the windows
2899: system and system32 directories for the java executable before checking the
2900: path when the full path to the java executable was not specified in the
2901: configuration file. This could lead to different JVM being run from the
2902: Wrapper than was run if java -version was run from the command line. The
2903: Wrapper will now attempt to resolve the full java path using the PATH
2904: environment variable.
2905: * Added debug output showing Java version information when the JVM first
2906: starts.
2907: * Modified c source to use /* */ style comments rather than // style comments.
2908: Some people were having problems with some compilers.
2909:
2910: 2.2.5
2911: * Added support for service descriptions for Win2k and XP.
2912: * Fixed bug issue when reading configuration files from Windows on Unix.
2913: * Deprecated the wrapper.debug property in favor of loglevels.
2914: * Added new logger functionality includes the following features:
2915: Loglevels like Log4j, NT Eventlog support, UNIX syslog support and rolling
2916: log files.
2917: * Added wildcard support for classpath entries in wrapper.conf.
2918: * Added the ability to specify configuration properties from the command line.
2919: * Changed the way NT services are installed so that a patched version of the
2920: Wrapper.exe file no longer needs to be created to reference the
2921: wrapper.conf file.
2922:
2923: 2.2.4
2924: * The value of APP_NAME in the bash or sh scripts no longer needs to be the
2925: same as the script.
2926: * Added the ability to format and/or disable file logging and output to the
2927: console.
2928: * Set mode of executables in binary release tar files so that they can be run
2929: without modification after being extracted.
2930: * Fixed line feeds in release so that bat files are always CRLF, unix scripts
2931: are always LF. Other source files are always CRLF in ZIP archives and LF
2932: in tar.gz archives.
2933: * Make the build fail if Wrapper.exe or Wrapper.dll do not exist for Windows
2934: builds.
2935: * Added an empty wrapper.log to the releases so that the TestWrapper example
2936: program runs out of the box.
2937:
2938: 2.2.3
2939: * Added template scripts and conf files for ease of integration with other
2940: applications.
2941: * Cleaned up the build.
2942: * The WrapperSimpleApp method of launchine applications was not working
2943: correctly with applications whose main method did not return.
2944: * Add sample scripts and wrapper.conf files in the bin and lib directories.
2945: These scripts are used to start a sample application which runs out of the
2946: box. See the new example.html page in the documentation for more details.
2947: * Get rid of the platform specific directories in the bin and lib directories.
2948: * Enable relative paths for Windows version. In previous versions of Wrapper,
2949: it was necessary to always use absolute paths because the working directory
2950: of the wrapper would be then NT System32 directory when run as a service.
2951: * On the windows version, the wrapper always sets the current working
2952: directory to the location of the wrapper executable immediately after
2953: startup.
2954: * Improvements to the documentation / web page.
2955:
2956: 2.2.2
2957: * Added HTML based documentation.
2958:
2959: 2.2.1
2960: * Added Linux and Solaris build files.
2961: * Added Linux and Solaris documentation.
2962:
2963: 2.2.0
2964: * Initial Public Release.
2965:
2966: