0

我有一个奇怪的问题,我正在使用 EJB 2.1 计时器对象在一天中的特定时间触发计时器并执行一些内务处理,例如删除文件。计时器按预期触发,但问题是它不会停止。以下是我用来启动计时器的代码:

Timer myTimer = timerService.createTimer(timeOfDay, myInterval, null);

在我的 ejbTimeout 方法中,我有一个删除文件的代码,现在如果我在这个方法中得到一个 IOException,那么 EJB 就会回滚;并再次调用该方法。计时器在停止前触发 10-15 次。我正在使用 WAS 6.1,并且在 WAS 之前没有遵守 EJB 规范方面有过一些不好的经历。有人有其他解释或理由吗?任何帮助,将不胜感激 !

4

1 回答 1

0

不要在 TimeOut 方法中编写逻辑,而是使用线程来删除文件。因此,即使线程中发生异常,您的事务也可能不会回滚。

否则,您可以使用 Bean Managed Transaction 来控制事务,可以回滚 - 相应地提交。

于 2010-12-18T10:31:59.830 回答