Java webapp完全启动后的Jersey初始化代码

Java webapp完全启动后的Jersey初始化代码,java,jersey,jax-rs,Java,Jersey,Jax Rs,我刚才问过这个问题: 在服务器完全初始化web应用程序后,是否有办法运行此初始化代码?我遇到了一个第二十二条军规的问题,我需要Tomcat完全启动web应用程序,然后才能运行一次登录调用?有几个注意事项。首先,Jersey被实现为一个servlet,这就是它的加载方式。将servlet启动与servlet上下文启动解耦的最简单方法是在启动时不加载它。通过从web.xml中的servlet描述符中省略load-on-startup元素来实现这一点。将其设置为非正值也应该有效 如果您必须在启动时加

我刚才问过这个问题:


在服务器完全初始化web应用程序后,是否有办法运行此初始化代码?我遇到了一个第二十二条军规的问题,我需要Tomcat完全启动web应用程序,然后才能运行一次登录调用?

有几个注意事项。首先,Jersey被实现为一个servlet,这就是它的加载方式。将servlet启动与servlet上下文启动解耦的最简单方法是在启动时不加载它。通过从web.xml中的servlet描述符中省略load-on-startup元素来实现这一点。将其设置为非正值也应该有效


如果您必须在启动时加载servlet,但仍然希望将其解耦(这是我的情况),那么您可能必须编写一些自定义代码,我就是这么做的。我想不出别的办法。使用某种类型的侦听器(a或Spring,具体取决于应用程序的设置方式)启动一个新线程,该线程将通过向Jersey servlet发出HTTP请求来初始化Jersey servlet。感觉有点脏,但正如我所说,这是我和我的团队唯一能想到的。首先,Jersey被实现为一个servlet,这就是它的加载方式。将servlet启动与servlet上下文启动解耦的最简单方法是在启动时不加载它。通过从web.xml中的servlet描述符中省略load-on-startup元素来实现这一点。将其设置为非正值也应该有效


如果您必须在启动时加载servlet,但仍然希望将其解耦(这是我的情况),那么您可能必须编写一些自定义代码,我就是这么做的。我想不出别的办法。使用某种类型的侦听器(a或Spring,具体取决于应用程序的设置方式)启动一个新线程,该线程将通过向Jersey servlet发出HTTP请求来初始化Jersey servlet。感觉有点脏,但就像我说的,这是我和我的团队唯一能想到的事情。

听起来你应该重新考虑你的设计……听起来你应该重新考虑你的设计……我用一个ServletFilter在第一次请求时进行调用,而不是在其他调用时进行调用。我用一个ServletFilter在第一次请求时进行调用而不是打其他电话。