如何知道Web服务是否已启动

时间:2014-10-27 07:01:16

标签: java web-services web-applications jboss

我有以下情况:

  • 在jBoss上托管了一个Web服务。
  • Web应用程序由Java应用程序使用。

现在通常的启动方案是:

  • jBoss启动并加载Web应用程序。
  • 然后启动应用程序并使用Web服务。

现在出现问题:

如果Java应用程序首先启动,是否有任何方法可以让它知道Web服务已经启动?

我想过定期ping网络服务,但这可能会让一些开销变得安静。欢迎任何解决方案。

3 个答案:

答案 0 :(得分:1)

您必须始终为客户端应用程序中的连接问题提供帮助 - 而不仅仅是启动,因此没有任何意义在" ping"。这适用于任何类型的远程连接解决方​​案。

如果是时间拨打该服务,只需拨打电话即可。如果它关闭,连接将失败,您可以以适当的方式通知用户。无论你是否ping,都必须这样做,因为服务可能会在最后一次ping和实际通话之间消失。

当客户端处于活动状态时,远程服务可能会多次上下移动。

答案 1 :(得分:0)

定期“ping”Web服务并不是一个很大的开销。为什么会这样?

重试之间稍等一下。一种常见的策略是将尝试之间的等待时间增加到最大值。例如。尝试,如果没有准备好,等待1秒,然后再试一次,如果仍然没有准备好,等待2秒,然后4秒等,最多重试之间最多8秒。

同时向用户显示消息,如:

"Waiting for web service to start..."

可选择包括到目前为止所做的尝试次数:

"Waiting for web service to start... (retrying #2)"

另外,您也可以将一个小的静态文本文件作为web应用程序的一部分提供,例如“ping.txt”,并尝试将其作为测试,确定应用程序是否已准备就绪,您无需致电网络服务本身。它也可以指向Servlet,在这种情况下,您可以确保servlet容器也已启动(当然禁用此ping URL的缓存)。

另外,如果您的Web服务模块有足够的时间站起来,另一种选择,“ping”的目标可能是Web服务的wsdl文档。大多数Web服务框架提供了访问/下载Web服务的动态生成的WSDL文档的方法。如果该URL响应并发送回动态WSDL文档,则wsdl模块也会启动。

答案 2 :(得分:-1)

您只需检查var / log /.... / access.log中的日志即可     例如。 tail -f /var/log/apache2/access.log