Bootstrap Code has been edited by Alex Karasulu (Mar 11, 2009).

(View changes)



This page describes how the ApacheDS bootstrap plugin for Maven works in conjunction with the various bootstrappers using the single software installation path with many instances configuration.

Bootstrap Framework

There are many daemon frameworks out there: jsvc, tanuki, and jrun. There are more but we have not written bootstrappers for them. However writing a bootstrapper for a new framework should be pretty simple to do thanks to this framework composed of the installer generating Maven plugin and the runtime interfaces and classes.

Before we go any further into the framework, please realize that this code has been devised for network server daemons like an LDAP server. The framework was not intended for use with generic non-server type applications. It can be adapted to suite them as well however this would chew up the code. It's best to just have this framework do what it does and do it well..

DaemonApplication Interface

The DaemonApplication interface declares life cycle methods that implementations use to init(), start(), stop(), and destroy() the service. The daemon framework will invoke init() then start(). The instance of the DaemonApplication that is instantiated on startup survives for a long time. When calling stop() and destroy() the instantiation occurs again in a separate process while the first instantiation is still running. Meaning, the same object instance is not invoked when the service is stopped, neither is it even in the same process.


Each framework may have it's own interface for starting and stopping the Java service. Regardless of what method is called to start or stop we normalize these as calls against the DaemonApplication. Each framework's bootstrapper will have it's own Bootstrapper class which extends Bootstrapper. The Bootstrapper base class has some base implementations for instantiating and invoking methods on the DaemonApplication. Most Bootstrapper extentions can reuse these methods instead of implementing their own. The bootstrapper is usually instantiated by the daemon process for the framework after starting up a JVM. Also most bootstrappers will in addition to calling start() will invoke init() first even if the framework does not have init() in it's life cycle.

Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request

Unsubscribe or edit your notifications preferences