Class SuspendController

  • All Implemented Interfaces:
    ServerSuspendController, SuspendableActivityRegistry, SuspensionStateProvider

    public class SuspendController
    extends Object
    implements ServerSuspendController, SuspendableActivityRegistry
    Orchestrates suspending and resuming of registered server activity. Registered server activity is organized into groups sharing the same suspend priority. Server suspension happens in two phases: prepare + suspend.
    1. Set state to State#PRE_SUSPEND
    2. Iterate over activity groups in priority order (from first to last). For each group:
      1. Create prepare stages for each registered server activity
      2. Once all prepare stages within priority group have complete, move on to next priority group
    3. Set state to State#SUSPENDING
    4. Iterate over activity groups in priority order (from first to last). For each group:
      1. Create suspend stages for each registered server activity
      2. Once all suspend stages within priority group have complete, move on to next priority group
    5. Set state to State#SUSPENDED
    Resuming the suspended server happens in one phase:
    1. Iterate over activity groups in reverse priority order (from last to first). For each group:
      1. Create resume stages for each registered server activity
      2. Once all resume stages within priority group have complete, move on to next priority group
    2. Set state to State#RUNNING
    Author:
    Stuart Douglas, Paul Ferraro