public class JobRegistryBackgroundJobRunner
extends java.lang.Object
Command line launcher for registering jobs with a JobRegistry
.
Normally this will be used in conjunction with an external trigger for the
jobs registered, e.g. a JMX MBean wrapper for a JobLauncher
, or a
Quartz trigger.
With any launch of a batch job within Spring Batch, a Spring context
containing the Job
has to be created. Using this launcher, the jobs
are all registered with a JobRegistry
defined in a parent application
context. The jobs are then set up in child contexts. All dependencies of the
runner will then be satisfied by autowiring by type from the parent
application context. Default values are provided for all fields except the
JobRegistry
. Therefore, if autowiring fails to set it then an
exception will be thrown.
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
EMBEDDED
System property key that switches the runner to "embedded" mode
(returning immediately from the main method).
|
static boolean |
testing |
Constructor and Description |
---|
JobRegistryBackgroundJobRunner(java.lang.String parentContextPath) |
Modifier and Type | Method and Description |
---|---|
static java.util.List<java.lang.Exception> |
getErrors()
Public getter for the startup errors encountered during parent context
creation.
|
static void |
main(java.lang.String... args)
Supply a list of application context locations, starting with the parent
context, and followed by the children.
|
void |
setJobLoader(JobLoader jobLoader)
A loader for the jobs that are going to be registered.
|
void |
setJobRegistry(JobRegistry jobRegistry)
A job registry that can be used to create a job loader (if none is provided).
|
static void |
stop()
If embedded in a JVM, call this method to terminate the main method.
|
public static final java.lang.String EMBEDDED
public static boolean testing
public JobRegistryBackgroundJobRunner(java.lang.String parentContextPath)
parentContextPath
- the parentContextPath to be used by the JobRegistryBackgroundJobRunner.public void setJobLoader(JobLoader jobLoader)
jobLoader
- the JobLoader
to setpublic void setJobRegistry(JobRegistry jobRegistry)
jobRegistry
- the JobRegistry
to setpublic static java.util.List<java.lang.Exception> getErrors()
public static void main(java.lang.String... args) throws java.lang.Exception
JobRegistry
and the child contexts are expected to contain
Job
definitions, each of which will be registered wit the
registry.
Example usage:
$ java -classpath ... JobRegistryBackgroundJobRunner job-registry-context.xml job1.xml job2.xml ...The child contexts are created only when needed though the
JobFactory
interface (but the XML is validated on startup by
using it to create a BeanFactory
which is then discarded).
The parent context is created in a separate thread, and the program will
pause for input in an infinite loop until the user hits any key.args
- the context locations to use (first one is for parent)java.lang.Exception
- if anything goes wrong with the context creationpublic static void stop()