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.
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..
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.