java - 我可以使用方法而不是类 Quartz 来定义作业实例吗?
问题描述
我正在阅读 Quartz文档并试图了解我可以在 Job 实例方法而不是类中传递。
例如,如果上课我需要写:
public class MyJobClass implements Job {
public MyJobClass() {
// Instances of Job must have a public no-argument constructor.
}
public void execute(JobExecutionContext context)
throws JobExecutionException {
JobDataMap data = context.getMergedJobDataMap();
System.out.println("someProp = " + data.getString("someProp"));
}
}
并定义一个作业实例,如:
JobDetail job1 = newJob(MyJobClass.class) // what about method here
.withIdentity("job1", "group1")
.usingJobData("someProp", "someValue")
.build();
按照同样的原则,我尝试定义作业实例传递方法,如:
// define the job
JobDetail job = newJob(testMethod())
.withIdentity("job1", "group1")
.build();
方法如下:
private Class<? extends Job> testMethod() {
//...
return null;
}
但我得到了错误:
java.lang.IllegalArgumentException: Job class cannot be null.
解决方案
您的testMethod()
方法返回null
. Quartz 不接受 null 并且失败。
Quartz 想自己管理工作,所以这就是为什么你只允许通过class
不instance
。
为什么需要提供自己的实例?如果你想让它“持久化”在执行之间保持状态,那么 Quartz 提供了stateful job
概念,请参阅http://www.quartz-scheduler.org/api/2.3.0/org/quartz/StatefulJob.html
推荐阅读
- css - 在父 div(均为固定宽度)内添加垂直子 div,并在父级别使用动态水平滚动条
- react-native - 为什么具有 onPress={action} 的 navigationOptions => headerLeft 中的按钮不起作用?反应原生
- postgresql - 创建一个聚合函数,该函数返回与最大 column2 值关联的 column1 值
- reactjs - 未找到 scheduler@^0.13.4 的匹配版本
- django - 在带有正则表达式的模板中使用 django cut filter
- java - 如何打印二维数组的间隔
- javascript - 如何在网格中的坐标中设置div
- android - Android AccessibilityService getEventTime() 时间格式
- graphql - GraphQL 错误中的“位置”指的是什么?
- android - Android BLE 通知限制和正确的前进方向。多个 BluetoothGatt 对象是前进的好方法吗?