如何手动实例化quartz jobDetail的newJob方法?

时间:2016-08-31 06:58:17

标签: quartz-scheduler

我参与了一个项目,但我遇到了问题。自动实例化我的对象jobdetail类型的newJob方法不能让我受益。我需要手动实例化newJob,将其作为参数传递给我选择的对象,但我不知道如何。有任何想法吗?谢谢。

1 个答案:

答案 0 :(得分:0)

您无法直接将参数传递给作业。 相反,您可以使用JobDataMap,它将由调度程序直接传递,如here所述。例如(在Java中):

// define the job and tie it to our DumbJob class
JobDetail job = newJob(DumbJob.class)
  .withIdentity("myJob", "group1") // name "myJob", group "group1"
  .usingJobData("jobSays", "Hello World!")
  .usingJobData("myFloatValue", 3.141f)
  .build();

而且,在工作中,您可以像这样访问地图:

public class DumbJob implements Job {

    public DumbJob() {
    }

    public void execute(JobExecutionContext context)
      throws JobExecutionException
    {
      JobKey key = context.getJobDetail().getKey();

      JobDataMap dataMap = context.getJobDetail().getJobDataMap();

      String jobSays = dataMap.getString("jobSays");
      float myFloatValue = dataMap.getFloat("myFloatValue");

      System.err.println("Instance " + key + " of DumbJob says: " + jobSays + ", and val is: " + myFloatValue);
    }
  }

希望它有所帮助!