我想要做的是读取一个包含一堆批处理文件(和 args)的文件,并为每个条目创建一个 quartz 作业。我知道我遗漏了一些明显的东西,但我似乎无法在谷歌的任何地方找到如何做到这一点。我发现的一切都表明必须为每个无法在外部构建的工作编写一个新类。我似乎无法找到如何创建可以传递给调度程序的类的实例。

public class MyJob implements Job{
    private String[] jobArgs = null;

    public MyJob(String[] jobArgs){
        this.jobArgs = jobArgs;
    }

    public void execute(JobExecutionContext arg0) throws JobExecutionException{
        ExternalProcess ep - new ExternalProcess();
        try{
            ep.runExecutableCommand(jobargs);
        }catch(Exception e){...}
    }

}

public class JobScheduler {
    ...
    List<String[]> jobArgList = loadJobListFromDisk();
    List<MyJob> = new ArrayList<MyJob>();
    for(String[] jobArgs : jobList){
        MyJob myJob = new MyJob(jobArgs);
        // Is it possible to pass in a reference to an instance somehow
        // instead of letting the scheduler create the instance based on
        // the class definition?  I know this syntax doesn't work, but this
        // is the general idea of what I'm trying to do.
        JobDetail jobDetail = JobBuilder.newJob(myJob).withIdentity...
    }
}

最佳答案

在quartz 2中,你需要使用一个JobDataMap(存储在jobDetail中)来传递参数给execute方法。它将在 context.getJobDetail().getJobDataMap() 中可用

关于java - 如何将作业对象实例传递给 quartz 调度程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19328480/

10-12 22:15