Fork me on GitHub

Overview

This service uses a background thread to monitor a resource. A resource is loaded by using a resource name and an InputStreamLocator. The a SHA-1 hashcode is derived and compared to the previous hashcode. If a change is detected the container is disposed, either by terminating all active threads or by calling System.exit(). This service allows to shutdown a long-running application by writing a timestamp into a file therefore avoiding any additional network support.

Configuration

Role Configuration

          
<role
  name="org.apache.fulcrum.yaafi.service.shutdown.ShutdownService"
  shorthand="ShutdownService"
  default-class="org.apache.fulcrum.yaafi.service.shutdown.ShutdownServiceImpl"
  early-init="true"
  description="Monitors a resource to force a disposal of the Avalon container"
/>
          
        

Example Component Configuration

The following configuration checks every 5 seconds if the files have changed. Changing "shutdown.txt" forces a disposable of the container and invoking System.exit() afterwards

          
<ShutdownService interval="5000">
  <entry>
    <location>./src/test/shutdown.txt</location>
    <useSystemExit>true</useSystemExit>
  </entry>
</ShutdownService>