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