1

我想找出计时器服务之间的区别。我应该使用哪个以及何时使用。我正在使用 Jboss 应用程序服务器。

  • 1) java.ejb.Schedule。@ 调度注解或从 xml 配置。

  • 2) javax.ejb.Timer。@Timeout 注解。

  • 3) javax.ejb.TimedObject。@Timeout 注解或从 xml 配置。

2和3一样吗?那是程序计时器自动计时器之间的区别吗? 是quartz-scheduler 的实现时间表吗?他们做同样的工作吗?

4

2 回答 2

1

1)你可以在你的EJB的任何业务方法上使用@Schedule注解,但是定时器不能动态创建。

2) 当您使用@Timeout 注解标记方法时,将在触发有问题的创建计时器时调用该方法。触发计时器的元数据在 Timer 对象中。

3) TimedObject 接口是@Timeout 注解的替代方案,因为TimedObject 接口包含ejbTimeout(Timer timer) 方法。

2和3一样吗?

2和3大体相同,

那是程序计时器和自动计时器之间的区别吗?

不同之处在于您创建它们的方式(使用 @Schedule 注释功能有限,因为您无法传递自定义对象)。

是quartz-scheduler 的实现时间表吗?他们做同样的工作吗?

Quartz 调度器是一个强大的框架,但与 Java EE6 的集成不如 Timer 对象那么好。我更喜欢 EJB 计时器,并且仅在需要一些额外功能(例如 cron 表达式)时才使用石英。

于 2013-07-02T09:39:16.757 回答
1

EJB 2.1 Java 1.4

ejbTimer 必须实现 TimedObject 接口。TimerService 必须通过 EJBContext() 访问。业务逻辑必须放在 ejbTimeout() 方法中。

EJB 3.0 Java 5

现在,可以使用带有注释@Resource TimerService 的依赖注入来访问 TimerService。业务逻辑可以放在任何带有@Timeout 注解的方法中

以前的版本称为程序计时器。

EJB 3.1 Java 6

Automatic Timer 出现,这意味着您现在不必关心如何获取 TimerService,因为 ejb 容器会完成这项工作。业务逻辑必须放在使用@Schedule 或@Schedules 注解的任何方法中,此注解还允许添加计时器执行周期。(在以前的版本中,这种配置是放在 xml 文件中的)

Quartz 不是 Java EE 规范的一部分。

于 2013-07-03T01:50:42.507 回答