0
我正在尝试将遗留应用程序迁移到jee 7.作为部署的一部分,我们在启动servelt时初始化少量高速缓存。 Inturn这些缓存被其他类使用。ManagedThreadFactory不会立即启动线程
传统实现会按顺序初始化它们。我正在尝试并行初始化它们以节省部署时间。
我正在使用ManagedThreadFactory.newThread(callable).start();
问题是,线程正在部署后或开始部署时开始初始化。这会导致其他类中的NPE取决于高速缓存。
有没有什么办法可以并行初始化缓存,一旦缓存初始化,剩下的部署应该继续。
谢谢。我仍然想知道为什么ManagedThreadFactory没有立即启动线程。另外,我们将在稍后使用启动单例ejb替换启动Servlet。所以我不认为ServletContextListener是我的选择。 –
我不知道你为什么认为这些线索并未开始 - 听起来像是这样,但其他事情也开始了。由于在启动时运行的servlet是关于应用服务器的最后一件事情,所以难怪这发生了。启动EJB可能工作,但最终需要确保在其他任务启动之前完成它 - 您可能需要某种锁定机制来防止在准备好之前使用缓存。 – stdunbar