我之前问了这个问题: Jersey app-run initialization code on startup to initialize application
在服务器完全初始化Web应用程序后,有没有办法运行此初始化代码?我遇到了一个catch-22问题,因为在我可以运行一次登录呼叫之前,我需要Tomcat完全启动的Web应用程序?
答案 0 :(得分:1)
有一些注意事项。首先,Jersey被实现为servlet,这就是它的加载方式。将servlet启动与servlet上下文启动分离的最简单方法是在启动时不加载它。通过从web.xml中的servlet描述符中省略load-on-startup元素来完成此操作。将其设置为非正数也应该有效。
如果你必须在启动时加载servlet但仍然想要解耦它,这是我的情况,你可能必须编写一些自定义代码,我做了。我想不出任何其他方式。使用某种类型的监听器 - ServletContextListener或Spring ApplicationListener,具体取决于您的应用程序的设置方式 - 启动一个新的线程,通过发出HTTP请求来初始化您的Jersey servlet它。感觉有点脏,但就像我说的那样,这是我和我的团队唯一能想到的。