【问题标题】:Calling REST service on tomcat startup在 tomcat 启动时调用 REST 服务
【发布时间】:2014-11-13 17:09:13
【问题描述】:

我需要在启动期间调用部署在 Tomcat 上的 REST 服务。问题是该服务在我尝试调用它的同一个 Tomcat 上运行。在启动期间无法访问 http-nio 处理程序(他的初始化在服务器启动结束时完成),因此调用 REST 服务会挂起服务器。是否有可能在Tomcat启动开始时而不是在结束时启动http-nio?或者也许有可能在服务器启动后调用 java 方法(现在我在 PostConstruct 方法中调用服务)?

【问题讨论】:

  • 这个要求可能是一个设计问题。也许您应该检查您的应用程序架构。此外,您提到的调用可以通过用户的第一个请求或通过预定进程运行。
  • 您是在 Tomcat 之上使用任何更高级别的框架,还是只是一个带有 servlet 的普通 webapp?
  • 带有 servlet 的 Web 应用程序。我也在使用 Spring。
  • 也许你应该解释为什么你认为你需要这样做以及这应该解决什么问题。这样,答案就可以集中在真正的问题上,而不是你认为的解决方案上。
  • 好的。我的应用程序很少,它们在不同的 Tomcat 上运行。在数据库中,我将地址存储到在这些应用程序上运行的 REST 服务。在启动 Tomcat 期间(或启动后),我想调用这些地址并从中获取一些信息。有一种情况是 REST 服务部署在我尝试调用所有服务的同一台服务器上。也许具有预定进程的解决方案是一个很好的线索,因为我正在考虑定期检查这些服务的可用性。

标签: java spring rest tomcat


【解决方案1】:

你可以试试 Async Http Client。

AsyncHttpClient asyncHttpClient = new AsyncHttpClient(new AsyncHttpClientConfig.Builder().setRequestTimeout(60000).build())

@Scheduled of spring

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    • 2017-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多