我有一个Java EE应用程序,该应用程序在部署后应该与外部系统启动一次同步过程。
我该如何执行此要求?
我测试了使用@Startup和@PostConstruct注释的建议解决方案。事实证明,Glassfish不会在完成所有带有注释的方法之前完成应用程序的部署@PostConstruct。因此,就我而言,部署将需要几分钟到一个小时。
@Startup
@PostConstruct
但是我想出了一种实现我想要的东西的不同方法。最好的解决方案似乎是计时器回调方法,该方法在执行后取消其计时器。
@Stateless public class SynchronisationService { @Schedule(hour = "*", minute = "*", persistent = false) protected void init(Timer timer) { doTheSync(); timer.cancel(); } }
如果重新启动应用程序服务器,则使用非持久性计时器可以重新创建计时器。