org.springframework.batch.core.scope.context

## Class JobSynchronizationManager

- java.lang.Object
- - org.springframework.batch.core.scope.context.JobSynchronizationManager

-     public class JobSynchronizationManager
      extends java.lang.Object

  Central convenience class for framework use in managing the job scope context. Generally only to be used by implementations of `Job`. N.B. it is the responsibility of every `Job` implementation to ensure that a `JobContext` is available on every thread that might be involved in a job execution, including worker threads from a pool.
  Since:
    3.0
  Author:
    Dave Syer, Jimmy Praet

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `JobSynchronizationManager()`

  - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static void` | `close()` Method for unregistering the current context - should always and only be used by in conjunction with a matching `register(JobExecution)` to ensure that `getContext()` always returns the correct value.
    `static JobContext` | `getContext()` Getter for the current context if there is one, otherwise returns null.
    `static JobContext` | `register(JobExecution JobExecution)` Register a context with the current thread - always put a matching `close()` call in a finally block to ensure that the correct context is available in the enclosing block.
    `static void` | `release()` A convenient "deep" close operation.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### JobSynchronizationManager

          public JobSynchronizationManager()

  - ### Method Detail

    - #### getContext

          public static JobContext getContext()

      Getter for the current context if there is one, otherwise returns null.
      Returns:
        the current `JobContext` or null if there is none (if one has not been registered for this thread).

    - #### register

          public static JobContext register(JobExecution JobExecution)

      Register a context with the current thread - always put a matching `close()` call in a finally block to ensure that the correct context is available in the enclosing block.
      Parameters:
        `JobExecution` - the step context to register
      Returns:
        a new `JobContext` or the current one if it has the same `JobExecution`

    - #### close

          public static void close()

      Method for unregistering the current context - should always and only be used by in conjunction with a matching `register(JobExecution)` to ensure that `getContext()` always returns the correct value. Does not call `JobContext.close()` - that is left up to the caller because he has a reference to the context (having registered it) and only he has knowledge of when the step actually ended.

    - #### release

          public static void release()

      A convenient "deep" close operation. Call this instead of `close()` if the step execution for the current context is ending. Delegates to `JobContext.close()` and then ensures that `close()` is also called in a finally block.