|
|
|
@ -24,6 +24,8 @@ import java.util.LinkedHashMap;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
import java.util.Properties;
|
|
|
|
|
|
|
|
|
|
import javax.annotation.PostConstruct;
|
|
|
|
|
|
|
|
|
|
import org.apache.commons.logging.Log;
|
|
|
|
|
import org.apache.commons.logging.LogFactory;
|
|
|
|
|
|
|
|
|
@ -66,6 +68,7 @@ import org.springframework.util.StringUtils;
|
|
|
|
|
* @author Jean-Pierre Bergamin
|
|
|
|
|
* @author Mahmoud Ben Hassine
|
|
|
|
|
* @author Stephane Nicoll
|
|
|
|
|
* @author Akshay Dubey
|
|
|
|
|
* @since 2.3.0
|
|
|
|
|
*/
|
|
|
|
|
public class JobLauncherApplicationRunner implements ApplicationRunner, Ordered, ApplicationEventPublisherAware {
|
|
|
|
@ -111,6 +114,18 @@ public class JobLauncherApplicationRunner implements ApplicationRunner, Ordered,
|
|
|
|
|
this.jobRepository = jobRepository;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@PostConstruct
|
|
|
|
|
public void validate() {
|
|
|
|
|
if (StringUtils.hasText(this.jobNames)) {
|
|
|
|
|
String[] jobsToRun = this.jobNames.split(",");
|
|
|
|
|
for(String jobName: jobsToRun) {
|
|
|
|
|
if (!isLocalJob(jobName) && !isRegisteredJob(jobName)) {
|
|
|
|
|
throw new IllegalArgumentException("No job instances were found for job name [" + jobName + "]");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void setOrder(int order) {
|
|
|
|
|
this.order = order;
|
|
|
|
|
}
|
|
|
|
@ -161,6 +176,14 @@ public class JobLauncherApplicationRunner implements ApplicationRunner, Ordered,
|
|
|
|
|
executeRegisteredJobs(jobParameters);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private boolean isLocalJob(String jobName) {
|
|
|
|
|
return this.jobs.stream().anyMatch((job) -> job.getName().equals(jobName));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private boolean isRegisteredJob(String jobName) {
|
|
|
|
|
return this.jobRegistry != null && this.jobRegistry.getJobNames().contains(jobName);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void executeLocalJobs(JobParameters jobParameters) throws JobExecutionException {
|
|
|
|
|
for (Job job : this.jobs) {
|
|
|
|
|
if (StringUtils.hasText(this.jobNames)) {
|
|
|
|
@ -178,16 +201,10 @@ public class JobLauncherApplicationRunner implements ApplicationRunner, Ordered,
|
|
|
|
|
if (this.jobRegistry != null && StringUtils.hasText(this.jobNames)) {
|
|
|
|
|
String[] jobsToRun = this.jobNames.split(",");
|
|
|
|
|
for (String jobName : jobsToRun) {
|
|
|
|
|
try {
|
|
|
|
|
if(isRegisteredJob(jobName) && !isLocalJob(jobName)) {
|
|
|
|
|
Job job = this.jobRegistry.getJob(jobName);
|
|
|
|
|
if (this.jobs.contains(job)) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
execute(job, jobParameters);
|
|
|
|
|
}
|
|
|
|
|
catch (NoSuchJobException ex) {
|
|
|
|
|
logger.debug(LogMessage.format("No job found in registry for job name: %s", jobName));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|