jan*_*ith 25 java quartz-scheduler
我想知道如何在Quartz中外部传递一个实例变量?
下面是我想写的伪代码.如何将externalInstance传递给这个Job?
public class SimpleJob implements Job {
@Override
public void execute(JobExecutionContext context)
throws JobExecutionException {
float avg = externalInstance.calculateAvg();
}
}
Run Code Online (Sandbox Code Playgroud)
Rip*_*ips 53
你可以把你的实例放在schedulerContext中.当你打算安排工作时,就在你可以做到这一点之前:
getScheduler().getContext().put("externalInstance", externalInstance);
Run Code Online (Sandbox Code Playgroud)
你的工作类如下:
public class SimpleJob implements Job {
@Override
public void execute(JobExecutionContext context)
throws JobExecutionException {
SchedulerContext schedulerContext = null;
try {
schedulerContext = context.getScheduler().getContext();
} catch (SchedulerException e1) {
e1.printStackTrace();
}
ExternalInstance externalInstance =
(ExternalInstance) schedulerContext.get("externalInstance");
float avg = externalInstance.calculateAvg();
}
}
Run Code Online (Sandbox Code Playgroud)
如果您使用Spring,您实际上可以使用spring的支持来注入整个applicationContext,就像在Link中回答一样
在使用触发器调度作业时,您已经定义JobDataMap了添加到JobDetail.JobDetail对象将出现在JobExecutionContext传递给execute()您的方法中Job.所以,你应该找到一种方法来通过你的externalInstance传递JobDataMap.HTH.
| 归档时间: |
|
| 查看次数: |
38144 次 |
| 最近记录: |