GlassFish 2.1 和 GlassFish 中未调用 @Schedule 注释的方法EJB 3
在我的无状态 bean 中,我有以下几行:
@Schedule(minute="*/2", hour="*")
public void doSomething() {}
我希望该方法每 2 分钟调用一次,但是当我部署它时,什么也没有发生。此外,如果我将 @Schedule 放入一个 bean 中,并且没有客户端调用此 bean 的任何方法(尚未创建 bean 实例),那么容器或其他任何东西会每 2 分钟调用此方法吗?
这是我第一次使用@Schedule注释,如果有人能给我一些关于这些问题的建议,我将非常感激。
最好的问候,
詹姆斯·特兰
In my Stateless bean, I have the following lines:
@Schedule(minute="*/2", hour="*")
public void doSomething() {}
I expect that this method would be called every 2 minutes but when I deploy it, nothing happens. Besides, if I put @Schedule in a bean and no client invokes any methods of this bean (the bean instance has not been created yet), will the container or anything call this method every 2 minutes?
This is the first time I have used @Schedule annotation, I'd be very grateful if someone could give me some advice on these matters.
Best regards,
James Tran
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
此处是来自 EE 6 文档的计时器服务链接。
请注意相关部分 -
当部署包含使用 @Schedule 或 @Schedules 注释的方法的企业 Bean 时,EJB 容器会创建自动计时器。企业 Bean 可以具有多个自动超时方法,与编程计时器不同,编程计时器只允许在企业 Bean 类中使用 @Timeout 注释来注释一种方法。
您可以尝试从 ejb-jar.xml 进行自动调度,而不是使用 @Schedule(如果这有什么区别)。从表面上看,我看不出你的设置有什么问题,除非尝试
编辑请参阅下面@bkails的评论。这可能不会给你买任何东西。
Here is the link on timer service from EE 6 docs.
Note the relevant part --
Automatic timers are created by the EJB container when an enterprise bean that contains methods annotated with the @Schedule or @Schedules annotations is deployed. An enterprise bean can have multiple automatic timeout methods, unlike a programmatic timer, which allows only one method annotated with the @Timeout annotation in the enterprise bean class.
You could try doing the automatic scheduling from ejb-jar.xml instead of using @Schedule if that makes any difference. From the looks of it, I can't see anything wrong with how you've set it up except maybe to try
EDIT See @bkails' comment below. That's probably not going to buy you anything.
我将 NetBean 6.7.1 与 Java EE 5 和 GlassFish v2.1 结合使用。在我安装带有 Java EE 6 和 GlassFish v3.1 的 NetBean 7.0.1 并使用它来部署我的应用程序后,@Schedule 注释终于可以按预期工作。
I was using NetBean 6.7.1 with Java EE 5 and GlassFish v2.1. After I installed NetBean 7.0.1 with Java EE 6 and GlassFish v3.1 and use it to deploy my application, the @Schedule annotation could finally work as expected.