我使用的是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。
答案 0 :(得分:2)
容器只能注入容器创建/管理的东西。
Quartz实例化作业实例。
因此,两者不能作为一个框架一起发挥。
您可以创建自己的Quartz JobFactory类实现来控制作业的实例化 - 您的实现可以委托给其他东西,比如容器。
此外,在您的工作中,您可以自己查找无状态bean,然后调用它。 Quartz附带一个EjbInvokerJob就可以执行此操作(在执行时调用已配置的ejb)。