我有以下情况:
现在通常的启动方案是:
现在出现问题:
如果Java应用程序首先启动,是否有任何方法可以让它知道Web服务已经启动?
我想过定期ping网络服务,但这可能会让一些开销变得安静。欢迎任何解决方案。
答案 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