注入石英作业

时间:2011-05-11 13:58:40

标签: java ejb-3.0 weblogic quartz-scheduler

我使用的是weblogic 11,ejb3.0

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

所以我想把我的工作类作为无状态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。

1 个答案:

答案 0 :(得分:2)

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

Quartz实例化作业实例。

因此,两者不能作为一个框架一起发挥。

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

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