I didn't find any really good example (actually I did not find a single example) on how to register a class that implements the org.apache.commons.daemon.Daemon
interface as Windows service.
Do I have to register this implementation using procrun? But than there doesn't seem to be a point in implementing the interface as procrun can register any program as windows service.
Furthermore there seems to be a docu-bug on the procrun page (http://commons.apache.org/proper/commons-daemon/procrun.html):
The description of the --StartMethod
parameter states:
Note: in jvm mode, the start method should not return until the stop method has been called.
But further down the page in the "Using Procrun in jvm mode" section:
Note that the method handling service start should create and start a separate thread to carry out the processing, and then return. The start and stop methods are called from different threads.
Am I reading this wrong or is this a little conflicting?? And what would be the correct behavior of a static start(String[] args) method?
Best regards
For the records:
Yes the service needs to be registered in Windows using prunsrv. For example with the following call:
After this the service can be started by
Testing both variants, only the implementation worked, that stayed in the start-method an did not spawn additional threads. That is a launcher implementation that can be registered with the above prunsrv call would look something like this (without any warranty):