@Bean public Job discreteJob() { AbstractJob job = new AbstractJob("discreteRegisteredJob") { @Override public Collection<String> getStepNames() { return Collections.emptySet(); } @Override public Step getStep(String stepName) { return null; } @Override protected void doExecute(JobExecution execution) throws JobExecutionException { execution.setStatus(BatchStatus.COMPLETED); } }; job.setJobRepository(this.jobRepository); return job; }
@Bean public Job discreteJob() { AbstractJob job = new AbstractJob("discreteLocalJob") { @Override public Collection<String> getStepNames() { return Collections.emptySet(); } @Override public Step getStep(String stepName) { return null; } @Override protected void doExecute(JobExecution execution) throws JobExecutionException { execution.setStatus(BatchStatus.COMPLETED); } }; job.setJobRepository(this.jobRepository); return job; }
private void registerJobExecutionEventListener(Object bean) { if (bean instanceof AbstractJob && this.applicationContext.containsBean(BatchEventAutoConfiguration.JOB_EXECUTION_EVENTS_LISTENER)) { JobExecutionListener jobExecutionEventsListener = (JobExecutionListener) this.applicationContext.getBean( BatchEventAutoConfiguration.JOB_EXECUTION_EVENTS_LISTENER); AbstractJob job = (AbstractJob) bean; job.registerJobExecutionListener( jobExecutionEventsListener); } }
@Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { if(jobNames.size() > 0) { if(!jobNames.contains(beanName)) { return bean; } } int length = this.applicationContext .getBeanNamesForType(TaskBatchExecutionListener.class).length; if(bean instanceof AbstractJob) { if(length != 1) { throw new IllegalStateException("The application context is required to " + "have exactly 1 instance of the TaskBatchExecutionListener but has " + length); } ((AbstractJob) bean).registerJobExecutionListener( this.applicationContext.getBean(TaskBatchExecutionListener.class)); } return bean; }
@Override public void onApplicationEvent(ContextRefreshedEvent event) { try { for (String jobName : baseConfig.jobRegistry().getJobNames()) { AbstractJob job = (AbstractJob) baseConfig.jobRegistry().getJob(jobName); this.addListenerToJobService().addListenerToJob(job); } } catch (NoSuchJobException e) { throw new IllegalStateException(e); } }