石英工作内部注射
我正在使用 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 中的业务方法通知不得声明为 Final
猜测我无法注释实现 Job 接口的类。
还有其他想法我该怎么做?
我的主要目标是从我的 Job 类调用存在于另一个部署中的无状态 bean。
I am using weblogic 11, ejb3.0
I am trying to do Ejb injection inside a class which implements Job (org.quartz.job
)
No success.
So i Thought to make my job class as a stateless bean. like that:
@Stateless(mappedName = "StartSyncJob")
@Local(
{ StartSyncJob.class })
public class StartSyncJob implements Job
...
and then tried the Ejb injection inside again but I got exception:
blogic.ejb.container.compliance.ComplianceException: Business method notify in class java.lang.Object must not be declared as final
Guess I cant annotate a class which implements Job interface.
any other Idea how can I do it?
My main target is to call stateless bean which exists in another deployment from my Job class.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
容器只能注入由容器创建/管理的东西。
Quartz 实例化作业实例。
因此,两者不能作为一个框架一起发挥作用。
您可以创建自己的 Quartz JobFactory 类的实现来控制作业的实例化 - 并且您的实现可以委托给其他东西,例如容器。
另外,在您的工作中,您可以自己查找无状态 bean,然后调用它。 Quartz 附带了一个 EjbInvokerJob 来完成此任务(在执行时调用已配置的 ejb)。
The container can only inject things created/managed by the container.
Quartz instantiates the job instances.
Hence the two don't play together as one framework.
You can create your own implementation of Quartz's JobFactory class to be in control of the instantiation of the job - and your implementation can delegate to something else, like the container.
Also, in your job, you can look up the Stateless bean yourself and then invoke it. Quartz ships with an EjbInvokerJob that does just that (invokes a configured ejb when it executes).