我有一个奇怪的问题,我使用EJB 2.1计时器对象在一天中的特定时间触发计时器并执行一些管理操作,例如删除文件。计时器按预期启动,但问题是它不会停止。以下是我用来启动计时器的代码:
Timer myTimer = timerService.createTimer(timeOfDay, myInterval, null);
在我的ejbTimeout方法中,我有一个删除文件的代码,现在如果我在此方法中获得IOException,那么EJB将被回滚;然后再次调用该方法。计时器在停止前发射10-15次。我使用的是WAS 6.1,而且我之前遇到过一些不符合EJB特性的错误经验。有没有人有任何其他解释或理由?任何帮助将不胜感激!
答案 0 :(得分:0)
不使用TimeOut方法编写逻辑,而是使用线程删除文件。因此,即使线程中发生异常,您的事务也可能无法回滚。
否则,您可以使用Bean Managed Transaction控制事务,可以回滚 - 相应地提交。