org.springframework.batch.admin.service
Class SimpleJobService

java.lang.Object
  extended by org.springframework.batch.admin.service.SimpleJobService
All Implemented Interfaces:
JobService, DisposableBean

public class SimpleJobService
extends Object
implements JobService, DisposableBean

Implementation of JobService that delegates most of its work to other off-the-shelf components.

Author:
Dave Syer

Constructor Summary
SimpleJobService(SearchableJobInstanceDao jobInstanceDao, SearchableJobExecutionDao jobExecutionDao, SearchableStepExecutionDao stepExecutionDao, JobRepository jobRepository, JobLauncher jobLauncher, ListableJobLocator jobLocator, ExecutionContextDao executionContextDao)
           
 
Method Summary
 JobExecution abandon(Long jobExecutionId)
          Mark the JobExecution as ABANDONED.
 int countJobExecutions()
          Count the maximum number of executions that could be returned by JobService.listJobExecutions(int, int).
 int countJobExecutionsForJob(String name)
          Count the job executions in the repository for a job.
 int countJobInstances(String name)
          Count the number of job instances in the repository for a given job name.
 int countJobs()
          Count the total number of jobs that can be returned by JobService.listJobs(int, int).
 int countStepExecutionsForStep(String jobName, String stepName)
          Count the step executions in the repository for a given step name (or pattern).
 void destroy()
          Stop all the active jobs and wait for them (up to a time out) to finish processing.
 JobExecution getJobExecution(Long jobExecutionId)
          Get a JobExecution by id.
 Collection<JobExecution> getJobExecutionsForJobInstance(String name, Long jobInstanceId)
          Get all the job executions for a given job instance.
 JobInstance getJobInstance(long jobInstanceId)
          Get a job instance by id.
 JobParameters getLastJobParameters(String jobName)
          Get the last JobParameters used to execute a job successfully.
 StepExecution getStepExecution(Long jobExecutionId, Long stepExecutionId)
          Locate a StepExecution from its id and that of its parent JobExecution.
 Collection<StepExecution> getStepExecutions(Long jobExecutionId)
          Get the step executions for a given job execution (by id).
 Collection<String> getStepNamesForJob(String jobName)
          Get the names of the steps in a job (or a historical list of recent execution names if the Job is not launchable).
 boolean isIncrementable(String jobName)
          Check if a job has a JobParametersIncrementer.
 boolean isLaunchable(String jobName)
          Convenience method to determine if a job is available for launching.
 JobExecution launch(String jobName, JobParameters jobParameters)
          Launch a job with the parameters provided.
 Collection<JobExecution> listJobExecutions(int start, int count)
          List the job executions in descending order of creation (usually close to execution order).
 Collection<JobExecution> listJobExecutionsForJob(String jobName, int start, int count)
          List the job executions for a job in descending order of creation (usually close to execution order).
 Collection<JobInstance> listJobInstances(String jobName, int start, int count)
          List the job instances in descending order of creation (usually close to order of execution).
 Collection<String> listJobs(int start, int count)
          Query the job names in the system, either launchable or not.
 Collection<StepExecution> listStepExecutionsForStep(String jobName, String stepName, int start, int count)
          List the step executions for a step in descending order of creation (usually close to execution order).
 void removeInactiveExecutions()
          Check all the active executions and see if they are still actually running.
 JobExecution restart(Long jobExecutionId)
          Launch a job with the parameters provided.
 void setShutdownTimeout(int shutdownTimeout)
          Timeout for shutdown waiting for jobs to finish processing.
 JobExecution stop(Long jobExecutionId)
          Send a signal to a job execution to stop processing.
 int stopAll()
          Send a stop signal to all running job executions.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SimpleJobService

public SimpleJobService(SearchableJobInstanceDao jobInstanceDao,
                        SearchableJobExecutionDao jobExecutionDao,
                        SearchableStepExecutionDao stepExecutionDao,
                        JobRepository jobRepository,
                        JobLauncher jobLauncher,
                        ListableJobLocator jobLocator,
                        ExecutionContextDao executionContextDao)
Method Detail

setShutdownTimeout

public void setShutdownTimeout(int shutdownTimeout)
Timeout for shutdown waiting for jobs to finish processing.

Parameters:
shutdownTimeout - in milliseconds (default 60 secs)

getStepExecutions

public Collection<StepExecution> getStepExecutions(Long jobExecutionId)
                                            throws NoSuchJobExecutionException
Description copied from interface: JobService
Get the step executions for a given job execution (by id).

Specified by:
getStepExecutions in interface JobService
Parameters:
jobExecutionId - the parent job execution id
Returns:
the step executions for the job execution
Throws:
NoSuchJobExecutionException

isLaunchable

public boolean isLaunchable(String jobName)
Description copied from interface: JobService
Convenience method to determine if a job is available for launching. Job names returned from JobService.listJobs(int, int) might be in the repository, but not be launchable if the host application has no configuration for them.

Specified by:
isLaunchable in interface JobService
Parameters:
jobName - the name of the job
Returns:
true if the job is available for launching

isIncrementable

public boolean isIncrementable(String jobName)
Description copied from interface: JobService
Check if a job has a JobParametersIncrementer.

Specified by:
isIncrementable in interface JobService
Parameters:
jobName - the job name
Returns:
true if the job exists and has an incrementer

restart

public JobExecution restart(Long jobExecutionId)
                     throws NoSuchJobExecutionException,
                            JobExecutionAlreadyRunningException,
                            JobRestartException,
                            JobInstanceAlreadyCompleteException,
                            NoSuchJobException,
                            JobParametersInvalidException
Description copied from interface: JobService
Launch a job with the parameters provided.

Specified by:
restart in interface JobService
Parameters:
jobExecutionId - the job execution to restart
Returns:
the resulting JobExecution if successful
Throws:
NoSuchJobExecutionException
JobExecutionAlreadyRunningException
JobRestartException
JobInstanceAlreadyCompleteException
NoSuchJobException
JobParametersInvalidException

launch

public JobExecution launch(String jobName,
                           JobParameters jobParameters)
                    throws NoSuchJobException,
                           JobExecutionAlreadyRunningException,
                           JobRestartException,
                           JobInstanceAlreadyCompleteException,
                           JobParametersInvalidException
Description copied from interface: JobService
Launch a job with the parameters provided. If an instance with the parameters provided has already failed (and is not abandoned) it will be restarted.

Specified by:
launch in interface JobService
Parameters:
jobName - the job name
jobParameters - the JobParameters
Returns:
the resulting JobExecution if successful
Throws:
NoSuchJobException
JobExecutionAlreadyRunningException
JobRestartException
JobInstanceAlreadyCompleteException
JobParametersInvalidException

getLastJobParameters

public JobParameters getLastJobParameters(String jobName)
                                   throws NoSuchJobException
Description copied from interface: JobService
Get the last JobParameters used to execute a job successfully.

Specified by:
getLastJobParameters in interface JobService
Parameters:
jobName - the name of the job
Returns:
the last parameters used to execute this job or empty if there are none
Throws:
NoSuchJobException

listJobExecutions

public Collection<JobExecution> listJobExecutions(int start,
                                                  int count)
Description copied from interface: JobService
List the job executions in descending order of creation (usually close to execution order).

Specified by:
listJobExecutions in interface JobService
Parameters:
start - the index of the first execution to return
count - the maximum number of executions
Returns:
a collection of JobExecution

countJobExecutions

public int countJobExecutions()
Description copied from interface: JobService
Count the maximum number of executions that could be returned by JobService.listJobExecutions(int, int).

Specified by:
countJobExecutions in interface JobService
Returns:
the number of job executions in the job repository

listJobs

public Collection<String> listJobs(int start,
                                   int count)
Description copied from interface: JobService
Query the job names in the system, either launchable or not. If not launchable, then there must be a history of the job having been launched previously in the JobRepository.

Specified by:
listJobs in interface JobService
Parameters:
start - the start index of the job names to return
count - the maximum number of job names to return
Returns:
a collection of job names

countJobs

public int countJobs()
Description copied from interface: JobService
Count the total number of jobs that can be returned by JobService.listJobs(int, int).

Specified by:
countJobs in interface JobService
Returns:
the total number of jobs

stopAll

public int stopAll()
Description copied from interface: JobService
Send a stop signal to all running job executions.

Specified by:
stopAll in interface JobService
Returns:
the number of executions affected

stop

public JobExecution stop(Long jobExecutionId)
                  throws NoSuchJobExecutionException,
                         JobExecutionNotRunningException
Description copied from interface: JobService
Send a signal to a job execution to stop processing. This method does not guarantee that the processing will stop, only that the signal will be delivered. It is up to the individual Job and Step implementations to ensure that the signal is obeyed. In particular, if users provide a custom Tasklet to a Step it must check the signal in the JobExecution itself.

Specified by:
stop in interface JobService
Parameters:
jobExecutionId - the job execution id to stop
Returns:
the JobExecution that was stopped
Throws:
NoSuchJobExecutionException
JobExecutionNotRunningException

abandon

public JobExecution abandon(Long jobExecutionId)
                     throws NoSuchJobExecutionException,
                            JobExecutionAlreadyRunningException
Description copied from interface: JobService
Mark the JobExecution as ABANDONED. If a stop signal is ignored because the process died this is the best way to mark a job as finished with (as opposed to STOPPED). An abandoned job execution can be restarted, but a stopping one cannot.

Specified by:
abandon in interface JobService
Parameters:
jobExecutionId - the job execution id to abort
Returns:
the JobExecution that was aborted
Throws:
NoSuchJobExecutionException
JobExecutionAlreadyRunningException - if the job is running (it should be stopped first)

countJobExecutionsForJob

public int countJobExecutionsForJob(String name)
                             throws NoSuchJobException
Description copied from interface: JobService
Count the job executions in the repository for a job.

Specified by:
countJobExecutionsForJob in interface JobService
Parameters:
name - the job name
Returns:
the number of executions
Throws:
NoSuchJobException

countJobInstances

public int countJobInstances(String name)
                      throws NoSuchJobException
Description copied from interface: JobService
Count the number of job instances in the repository for a given job name.

Specified by:
countJobInstances in interface JobService
Parameters:
name - the name of the job
Returns:
the number of job instances available
Throws:
NoSuchJobException

getJobExecution

public JobExecution getJobExecution(Long jobExecutionId)
                             throws NoSuchJobExecutionException
Description copied from interface: JobService
Get a JobExecution by id.

Specified by:
getJobExecution in interface JobService
Parameters:
jobExecutionId - the job execution id
Returns:
the JobExecution
Throws:
NoSuchJobExecutionException

getJobExecutionsForJobInstance

public Collection<JobExecution> getJobExecutionsForJobInstance(String name,
                                                               Long jobInstanceId)
                                                        throws NoSuchJobException
Description copied from interface: JobService
Get all the job executions for a given job instance. On a sunny day there would be only one. If there have been failures and restarts there may be many, and they will be listed in reverse order of primary key.

Specified by:
getJobExecutionsForJobInstance in interface JobService
Parameters:
name - the name of the job
jobInstanceId - the id of the job instance
Returns:
all the job executions
Throws:
NoSuchJobException

getStepExecution

public StepExecution getStepExecution(Long jobExecutionId,
                                      Long stepExecutionId)
                               throws NoSuchJobExecutionException,
                                      NoSuchStepExecutionException
Description copied from interface: JobService
Locate a StepExecution from its id and that of its parent JobExecution.

Specified by:
getStepExecution in interface JobService
Parameters:
jobExecutionId - the job execution id
stepExecutionId - the step execution id
Returns:
the StepExecution
Throws:
NoSuchJobExecutionException
NoSuchStepExecutionException

listJobExecutionsForJob

public Collection<JobExecution> listJobExecutionsForJob(String jobName,
                                                        int start,
                                                        int count)
                                                 throws NoSuchJobException
Description copied from interface: JobService
List the job executions for a job in descending order of creation (usually close to execution order).

Specified by:
listJobExecutionsForJob in interface JobService
Parameters:
jobName - the job name
start - the start index of the first job execution
count - the maximum number of executions to return
Returns:
a collection of JobExecution
Throws:
NoSuchJobException

listStepExecutionsForStep

public Collection<StepExecution> listStepExecutionsForStep(String jobName,
                                                           String stepName,
                                                           int start,
                                                           int count)
                                                    throws NoSuchStepException
Description copied from interface: JobService
List the step executions for a step in descending order of creation (usually close to execution order).

Specified by:
listStepExecutionsForStep in interface JobService
Parameters:
jobName - the name of the job associated with the step (or a pattern with wildcards)
stepName - the step name (or a pattern with wildcards)
start - the start index of the first execution
count - the maximum number of executions to return
Returns:
a collection of StepExecution
Throws:
NoSuchStepException

countStepExecutionsForStep

public int countStepExecutionsForStep(String jobName,
                                      String stepName)
                               throws NoSuchStepException
Description copied from interface: JobService
Count the step executions in the repository for a given step name (or pattern).

Specified by:
countStepExecutionsForStep in interface JobService
Parameters:
jobName - the job name (or a pattern with wildcards)
stepName - the step name (or a pattern with wildcards)
Returns:
the number of executions
Throws:
NoSuchStepException

getJobInstance

public JobInstance getJobInstance(long jobInstanceId)
                           throws NoSuchJobInstanceException
Description copied from interface: JobService
Get a job instance by id.

Specified by:
getJobInstance in interface JobService
Parameters:
jobInstanceId - the id of the instance
Returns:
a job instance
Throws:
NoSuchJobInstanceException

listJobInstances

public Collection<JobInstance> listJobInstances(String jobName,
                                                int start,
                                                int count)
                                         throws NoSuchJobException
Description copied from interface: JobService
List the job instances in descending order of creation (usually close to order of execution).

Specified by:
listJobInstances in interface JobService
Parameters:
jobName - the name of the job
start - the index of the first to return
count - the maximum number of instances to return
Returns:
a collection of job instances
Throws:
NoSuchJobException

getStepNamesForJob

public Collection<String> getStepNamesForJob(String jobName)
                                      throws NoSuchJobException
Description copied from interface: JobService
Get the names of the steps in a job (or a historical list of recent execution names if the Job is not launchable).

Specified by:
getStepNamesForJob in interface JobService
Parameters:
jobName - the name of the job
Throws:
NoSuchJobException - if the job name cannot be located

destroy

public void destroy()
             throws Exception
Stop all the active jobs and wait for them (up to a time out) to finish processing.

Specified by:
destroy in interface DisposableBean
Throws:
Exception

removeInactiveExecutions

@Scheduled(fixedDelay=60000L)
public void removeInactiveExecutions()
Check all the active executions and see if they are still actually running. Remove the ones that have completed.



Copyright © 2011. All Rights Reserved.