我使用的是weblogic 11,ejb3.0
我正在尝试在实现 Job (org.quartz.job
) 的类中进行 Ejb 注入(inject)
没有成功。
所以我想将我的工作类设置为无状态 bean。像这样:
@Stateless(mappedName = "StartSyncJob")
@Local(
{ StartSyncJob.class })
public class StartSyncJob implements Job
...
然后再次尝试内部 Ejb 注入(inject),但出现异常:
blogic.ejb.container.compliance.ComplianceException: Business method notify in class java.lang.Object must not be declared as final
我猜我无法注释一个实现 Job 接口(interface)的类。
还有其他想法我该怎么做吗?
我的主要目标是从我的 Job 类调用另一个部署中存在的无状态 bean。
最佳答案
容器只能注入(inject)由容器创建/管理的东西。
Quartz 实例化作业实例。
因此,两者不能作为一个框架一起发挥作用。
您可以创建自己的 Quartz JobFactory 类实现来控制作业的实例化 - 并且您的实现可以委托(delegate)给其他东西,例如容器。
此外,在您的工作中,您可以自己查找无状态 bean,然后调用它。 Quartz 附带了一个 EjbInvokerJob 来完成此任务(在执行时调用已配置的 ejb)。
关于java - quartz 工作内部注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5965458/