在将应用程序迁移到最新的 Liberty 期间,我在创建 Timer 时遇到了一些问题。Timer 在initialize() 方法(@PostConstruct) 中的@Singleton 注释类中创建。代码很简单:
ScheduleExpression schedule = new ScheduleExpression();
setScheduleExpressionTime(schedule);
TimerConfig timerConfig = new TimerConfig();
timerConfig.setPersistent(false);
timerScheduled = timerService.createCalendarTimer(schedule, timerConfig);
当我部署应用程序时,我收到了为我的持久性计时器创建数据源的建议的异常。我知道 - 默认情况下,计时器是持久性的,需要数据源和表来保持它的状态,但我要求创建非持久性。
我试图从服务器功能中删除对持久性计时器的支持(我将 Java EE 7 Full Platform 功能更改为 Java™ EE 7 Web Profile,因此不再需要 ejb-3.2)。现在我有例外: CNTR4019E:无法创建或访问持久计时器。server.xml 文件中配置的任何功能都不支持持久 EJB 计时器。
所以,看起来服务器忽略了我创建非持久性计时器的要求并总是试图创建持久性。这段代码以前可以与一些旧的 WAS (JEE6) 一起使用,但现在我无法部署它。
有人遇到过这个问题吗?可能是我做错了什么?先感谢您。