gpt4 book ai didi

java - 如何在运行时创建新的JobDetail作业?

转载 作者:行者123 更新时间:2023-12-01 10:00:27 25 4
gpt4 key购买 nike

我正在为客户端(不是服务器)配置 Quartz。如果我需要创建一个新的 JobDetail job我会执行以下操作

JobDetail job = JobBuilder.newJob(TestJob.class)
.withIdentity("dummyJobName", "group1").build();

Trigger trigger = . .

Scheduler scheduler = new StdSchedulerFactory().getScheduler();
scheduler.start();
scheduler.scheduleJob(job, trigger);

最初我想将一个类的对象提供给 newJob

但是newJob方法采用类作为参数(而不是类的实例)。 JobBuilder org.quartz.JobBuilder.newJob(Class<? extends Job> jobClass)

我无法在运行时创建新类。这至少效率不高。

那么我如何添加新的 JobDetail job在运行时?

<小时/>

应该TestJob类是抽象的,以便我可以在运行时自定义它。我在这里很困惑

stackoverflow 上有类似的问题。因此,“Quartz 调度程序的 JobFactory API 通过自定义类加载器加载作业类,这将允许您真正动态地添加作业”

但是怎么办呢?

最佳答案

您不能直接从对象中创建JobDetail,除非您对其进行序列化(不建议这样做)。您可以做的是创建一个 HashMap 并将所有数据添加到其中,然后执行以下操作。

Map<String, Serializable> jobData = Maps.newHashMap();
jobData.put("yourkey", "youdata");
...
JobDetail job = newJob(TestJob.class).usingJobData(jobData)
.build();
//build your trigger
scheduler.scheduleJob(job, trigger)

关于java - 如何在运行时创建新的JobDetail作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36855251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com