Java Service Wrapper Project History
For those interested, this section will take the reader through a brief
history of how the current Java Service Wrapper came to be.
 |
Early in 1999, after having played with Java for a few months, Leif
Mortenson ran into a problem with a service that he had been developing.
There was no way to install the Java application as an NT service.
The solution was to write a replacement for the java executable which
had the ability to be installed as a service. This version of the
wrapper worked by loading the jvm.dll and then launching a new JVM
instance using JNI.
|
 |
In October 1999, Leif joined a startup company called
Silver Egg Technology. Over
the next year, Silver Egg developed a recommendation engine, called Aigent,
for use in web site personalization. As Aigent was built in Java, it had
the same problem with being installed as an NT service as some of Leif's
previous projects. The Wrapper code was brought in from home and used as
part of the Aigent product to provide that functionality.
In March 2000, Ryan Shaw joined Silver Egg and brought with him a wealth
of knowledge of the Linux OS. All platform specific portions of the Aigent
product, including the Wrapper, were ported over to Linux. At this point
was still a very simple tool for running installing a JVM as a service.
Its usefulness on Linux was limited to making it easier to run the product
on both platforms with common configuration files.
|
 |
In November 2000. Aigent began having serious stability problems. The
product would work perfectly for 2-3 weeks at a time. All memory and
performance were perfectly flat. Then all of a sudden, the JVM would
crash with a Hot Spot Access Violation. This was very bad as the product
was installed at a couple customer sites at the time. A few weeks were
spent trying to track down the problems. But no headway was made and the
customers were getting tired of the procedure of having to restart their
server every week to avoid the crash.
Leif came up with the idea of modifying the Wrapper so that it would run
the JVM in a spawned process rather than as a DLL. This way if the JVM
process crashed or hung for any reason, the Wrapper process would still
be alive and in a position to do something about it. This Wrapping and
monitoring of the JVM process is where the Java Service Wrapper project
got its current name. This new functionality turned out to be very useful
on the Linux platform as well.
After a few more months, the cause of Aigent crashing turned out to be
an ArrayList which was not being synchronized correctly. The HotSpot
compiler had optimized the code in such a way that if two threads accessed
the ArrayList in a certain way at the same time, the JVM would crash. The
code was accessed several times per second under load tests, so why it
reliably took 2-3 weeks to reproduce is anyone guess. But the Wrapper had
proved its usefulness by getting Aigent through its rough spell
guaranteeing that any loss of service due to a JVM crash never lasted
more than a few seconds.
|
 |
Realizing that the Wrapper would most like be very useful to a lot of other
users, Ryan and Leif decided to give something back to the open source
community. A project was registered on SourceForge and the Java Service
Wrapper had its first public release in November 2001.
The first version of the Wrapper was was not very flexible, having been
designed for a few specific applications. Over the first few versions a
lot of work was done to create documentation as well as adding several
features to make it much more configurable.
Within a month of the first release, the Wrapper was ported to its first
new platform, Solaris.
Johan Sorlin (Spocke) joined the project in January 2002 after contributing
a great new logging architecture which made it possible for the Wrapper to
log to the Windows event log and Unix syslog.
Being a company which provides middle ware software and services to other
internet companies, Silver Egg felt the full brunt of the downward spiral
in the post bubble internet market, and in April 2002 were forced to do
a reorganization. They have since come back strong, but Ryan and Leif
both chose to move on to new jobs while continuing to maintain the Wrapper
as a project on SourceForge.
|
 |
In January of 2003, to reflect the fact that continuing development of the
Wrapper was being done almost entirely by Leif, the decision was made to
branch and then sub-license the Java Service Wrapper code base. The new
license was placed under the copyright
of Tanuki Software, owned by Leif. In addition to simply giving credit
where credit is due, this move was made to maintain control over the
future availability and development of the Wrapper along with the code
and ideas added after the branch.
Packages were changed from com.silveregg.wrapper to
org.tanukisoftware.wrapper. While the Silver Egg packages were deprecated,
they were maintained as wrappers around the classes in the new packages
to maintain forward compatibility for the user base.
Over the last year, several users have offered to donate funds to help
support the project. Of course the members of the team greatly appreciate
any such contributions. So to make it easier, a PayPal account was
opened to accept any and all donations.
Version 3.0.0 also adds AIX and HP-UX to the list of supported platforms.
Thanks to Ashish Gawarikar and William Lee for the patches.
|
 |
Version 3.0.3 welcomed Mac OSX to the list of supported platforms. Thanks
go out to Andy Barnett for the necessary patches and testing.
|
 |
Version 3.0.4 welcomed DEC OSF1 and FreeBSD to the list of supported platforms.
Thanks to Andreas Wendt and Alphonse Bendt for the necessary patches and
testing.
|
 |
Version 3.0.5 welcomed SGI Irix to the list of supported platforms.
Thanks to Andreas Wendt for the necessary patches and testing.
|
|