【问题标题】:Injection inside Quartz JobQuartz Job 内部注入
【发布时间】:2011-08-23 08:30:44
【问题描述】:

我正在使用 weblogic 11,ejb3.0

我正在尝试在实现 Job 的类中进行 Ejb 注入 (org.quartz.job) 没有成功。

所以我想将我的工作类设为无状态 bean。像这样:

 @Stateless(mappedName = "StartSyncJob")
 @Local(
  { StartSyncJob.class })
 public class StartSyncJob implements Job  
  ...

然后又尝试了里面的Ejb注入,但我得到了异常:

blogic.ejb.container.compliance.ComplianceException:类 java.lang.Object 中的业务方法 notify 不得声明为 final

我猜我不能注释一个实现 Job 接口的类。

任何其他想法我该怎么做?

我的主要目标是从我的 Job 类调用另一个部署中存在的无状态 bean。

【问题讨论】:

    标签: java ejb-3.0 weblogic quartz-scheduler


    【解决方案1】:

    容器只能注入由容器创建/管理的东西。

    Quartz 实例化作业实例。

    因此两者不能作为一个框架一起玩。

    您可以创建自己的 Quartz 的 JobFactory 类的实现来控制作业的实例化 - 您的实现可以委托给其他东西,例如容器。

    此外,在您的工作中,您可以自己查找无状态 bean,然后调用它。 Quartz 附带了一个 EjbInvokerJob,它就是这样做的(在执行时调用配置的 ejb)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-08
      • 2021-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多