【问题标题】:Spring MVC setup configuration for Auto-navigating to a url after tomcat server startup用于在 tomcat 服务器启动后自动导航到 url 的 Spring MVC 设置配置
【发布时间】:2015-09-15 19:10:12
【问题描述】:

我的 Tomcat 的 webapps 文件夹中有 2 个 war 文件,我想在所有 war 文件完全部署到 tomcat 服务器后点击一个 url(当它显示服务器在 some 毫秒内启动时)

当它显示服务器已启动时,现在是时候自动点击一个 url。当我手动点击该 url 时它正在工作,但我想要一些自动方式,无论是服务器自动还是从 spring 开始。

谢谢。

【问题讨论】:

  • 谁应该“点击网址”?您希望服务器向自己发送 HTTP 请求吗?为什么?你想达到什么目的?
  • 实际上我的 2 个 war 文件是独立部署的,但是必须正确部署第 2 个 war 文件,然后它应该命中我的第一个 war 文件才能开始处理,在这种情况下,第一个 war 文件保持空闲直到命中。但我不想等待用户,我想在 tomcat 服务器启动后立即处理。
  • 所以,使用 ServletContextListener 或 Spring ApplicationListener,然后从那里做你想做的事。您无需请求即可开始在应用程序中执行操作。
  • 我在第二次战争文件中使用了 Spring ApplicationListener 来打第一次战争。但是当我启动服务器时,我的第一个战争文件正在部署。但 2nd 仍处于部署模式,并且它没有响应,就像 10 分钟服务器超时后显示的那样。当我去调试时,可以点击 url。但是当它在点击 url 的那一行时,控制不会到来。

标签: java spring spring-mvc tomcat


【解决方案1】:

所以从标签中我假设你使用弹簧......所以挂钩弹簧启动事件,示例在这里 How to add a hook to the application context initialization event?

【讨论】:

  • 我认为这个 spring applicationlistener 不适合我。因为它应该在服务器启动后调用,所以我已将此 applicationlistner 嵌入到第二次战争中,并将该 bean 添加到 application-context.xml 中。但是这个类在部署第一次和第二次战争之间调用。我希望在完成 server-start-up 后点击该网址
  • 有两件事-服务器启动和应用程序部署,我认为您混淆了这两件事。服务器可能启动但未部署任何应用程序。您想在部署所有应用程序后点击 url。在这种情况下,您必须搜索允许您进行一些有序部署的服务器特定解决方案。设置顺序,仅在将要部署的最后一个应用上使用 ApplicationListener。
【解决方案2】:

您可以使用LifeCycleListener 告诉您Tomcat 是否已完全启动。但无论如何,如果它已经启动并不意味着你的应用也启动了。

【讨论】:

【解决方案3】:

所以在这里你有几个选择。

最简单的一种是使用 LifecycleListener 监听 applicationReady 事件,然后启动一个线程来轮询另一个应用程序,直到另一个应用程序准备好,只要在调用另一个应用程序时遇到 http 错误,它就会重试。但是您应该在调用之间休眠(例如 1 秒),否则您将产生如此多的负载,以至于其他应用程序将很难完成其部署。 在对其他应用的 http 调用成功后,轮询线程结束。

另一种解决方案是使用事件服务器(如 rabbitMQ),您将“我准备好了”之类的消息发送到队列,其他应用程序在准备好时获取消息。但是你需要一个持久化队列,所以当其他应用程序不存在时消息不会丢失,并且需要在之后清除队列等。

我想我会先尝试线程轮询。

【讨论】:

    猜你喜欢
    • 2012-12-06
    • 2019-04-27
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    • 2018-04-14
    • 2019-12-31
    • 2018-09-24
    • 1970-01-01
    相关资源
    最近更新 更多