java - 无法在 Apache isis quartz 中注入(inject)服务

标签 java quartz-scheduler isis

我在我的 apache isis 项目中使用 quartz 进行调度。我有一个 MyJob 类,它实现了 org.quartz.Job 并且它有方法 execute,当调度程序在给定时间触发时调用。

我的问题是,我有一个类 DemoService 并且它有一个方法 showDemo() 我想从 execute 方法中调用它。 但是当调度程序运行时,它会在 demoService.showDemo() 处抛出 Null Pointer Exception。

我无法在该类中注入(inject)任何服务。它总是给出 NPE。如何将服务注入(inject) MyJob 类?

这是代码:-

public class MyJob implements Job {

    @Inject
    DemoService demoService;

    public MyJob() {

    }

    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        demoService.showDemo();
    }
}

最佳答案

最简单的方法是将要运行的逻辑放在AbstractIsisSessionTemplate 的子类中,然后从您的 quartz 作业中实例化并执行它。

Incode Platform 的 quartz 作业使用此技术来运行后台命令,请参阅 here ; quartz module从 quartz 的角度展示了这一点(我想你已经明白了)。

HTH 丹

关于java - 无法在 Apache isis quartz 中注入(inject)服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46398518/

相关文章:

quartz-scheduler - quartz 调度器集群

java - 带注释的 Spring 3 调度 - 看看队列?

java - 使用 Quartz 或任何其他 java api 进行动态作业调度

java - CommandExecuteIn 后台抛出 "Not an (encodable) value"错误

java - ISIS:附件收集问题(Blob,Clob)

java - 单击按钮时,为什么我的应用程序会崩溃?

java - TestNG ExpectedException 未找到抛出的异常

java - Apache Isis 和 MySQL

java - CloudSDK 能否帮助使用仅在运行时已知的 OData 实体类型?

java - 在 URL 上使用 HTTP GET 请求与本地 .html 文件之间的区别?