2015-09-04 12 views
7

dbを使用せずに実行時にSpring Batchで定義されたジョブのリストを取得できますか?おそらく、このメタデータをjobRepository beanまたは類似のオブジェクトから取得することは可能でしょうか?Springバッチ:実行時に定義されたジョブのリストを取得

+0

を一覧表示し、実行するには、これらのコードを使用しますか?ローカルアプリケーションコンテキストのジョブ?ジョブリポジトリ内のジョブ?いくつかの他の定義? –

+0

私は自分のローカルアプリケーションコンテキストで定義したすべてのジョブを意味します –

+1

これは 'context.getBeanNamesForType(Job.class)'と同じように簡単に行うことができます。 –

答えて

5

JobExplorer.getJobNames()を使用してすべてのジョブ名のリストを取得できます。

<bean id="jobExplorer" class="org.springframework.batch.core.explore.support.JobExplorerFactoryBean"> 
    <property name="dataSource" ref="dataSource"/> 
</bean> 

を、あなたがそれを必要とするとき、あなたはこのBeanを注入することができます

最初JobExplorerFactoryBeanを使用してjobExplorer Beanを定義する必要があります。

+0

これは動作しますが、dbを使用します。データベースなしでそれを見つける方法はありますか? –

1

Beanとして構成されたジョブ名のリストを取得する代わりに、ListableJobLocatorを使用できます。

@Autowired 
ListableJobLocator jobLocator; 

.... 

jobLocator.getJobNames(); 

これはジョブリポジトリを必要としません。

0

私は、あなたが「定義されたジョブ」とはどういう意味ですかジョブ

private String jobName = ""; 
    private JobLauncher jobLauncher = null; 
    private String selectedJob; 
    private String statusJob = "Exit Status : "; 
    private Job job; 
    ApplicationContext context; 
    private String[] lstJobs; 

    /** 
    * Execute 
    */ 
    public ExecuteJobBean() { 
     this.context = ApplicationContextProvider.getApplicationContext(); 
     this.lstJobs = context.getBeanNamesForType(Job.class); 


     if (jobLauncher == null) 
      jobLauncher = (JobLauncher) context.getBean("jobLauncher"); 
    } 

    /** 
    * Execute 
    */ 
    public void executeJob() { 

     setJob((Job) context.getBean(this.selectedJob)); 

     try { 
      statusJob = "Exit Status : "; 
      JobParameters jobParameters = new JobParametersBuilder().addLong("time", System.currentTimeMillis()).toJobParameters(); 
      JobExecution execution = jobLauncher.run(getJob(), jobParameters); 
      this.statusJob = execution.getStatus() + ", "; 
     } catch (Exception e) { 
      e.printStackTrace(); 
      this.statusJob = "Error, " + e.getMessage(); 
     } 
     this.statusJob += " Done!!"; 
    } 
関連する問題