【问题标题】:Jersey initialization code after webapp is fully startedwebapp完全启动后的Jersey初始化代码
【发布时间】:2011-09-16 18:54:46
【问题描述】:

我之前问过这个问题: Jersey app-run initialization code on startup to initialize application

在服务器完全初始化 Web 应用程序后,有什么方法可以运行此初始化代码?我遇到了一个 catch-22 问题,我需要由 Tomcat 完全启动 Web 应用程序,然后才能运行一次登录调用?

【问题讨论】:

  • 听起来你应该重新考虑你的设计......

标签: java jersey jax-rs


【解决方案1】:

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

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

【讨论】:

  • 我最终使用了一个 ServletFilter 来完成它,它在第一个请求而不是其他调用上进行调用。
猜你喜欢
  • 2012-10-04
  • 2011-11-17
  • 1970-01-01
  • 2017-09-12
  • 1970-01-01
  • 2017-09-24
  • 1970-01-01
  • 2014-10-20
  • 1970-01-01
相关资源
最近更新 更多