等到tomcat完成启动

我有一个脚本,需要运行后,tomcat完成启动,并准备开始部署应用程序。 我正在使用$TOMCAT_HOME/bin/startup.sh ,它立即返回。 我如何等待tomcat完成启动?

Solutions Collecting From Web of "等到tomcat完成启动"

有可能有几种方法来做到这一点。 我们使用的技巧是:

 #!/bin/bash until [ "`curl --silent --show-error --connect-timeout 1 -I http://localhost:8080 | grep 'Coyote'`" != "" ]; do echo --- sleeping for 10 seconds sleep 10 done echo Tomcat is ready! 

希望这可以帮助!

执行程序并不困难。 你可以实现org.apache.catalina.Lifecyclelistner,然后你会有

 public void lifecycleEvent(LifecycleEvent lifecycleEvent) { if(lifecycleEvent.getType().equals(Lifecycle.START_EVENT)) //do what you want } } 

在web.xml中:

 <Context path="/examples" ...> ... <listner className="com.mycompany.mypackage.Mylistner" ... > ... </Context> 

请注意,有些事情可能会有所不同6-9雄猫。

取决于你的意思完成。 你想等什么?

例如,你可以有一个脚本重复地访问一个URL,直到获得一个理想的结果,这个结果只有在应用程序被正确初始化后才可用。

你也可以有一个上下文监听器,写出一个“我准备好”的文件,用来表示你的应用程序的准备就绪。 (如果这样做,请确保在启动应用程序容器之前文件不存在)。

你还在寻找答案吗? 这取决于你开始的定义。 如果您的启动定义是“现在可以安全停止”,那么您可能需要验证端口8005是否正在侦听。

这不是一个简单的方法。 就startup.sh和catalina.sh而言,tomcat正在运行。 虽然在内部,tomcat仍在初始化和启动上下文。

这将有助于知道你是否试图找出你的上下文是否完成加载,或者如果你只是想要一个普通的,“Tomcat是runnnig,尽管你的上下文可能不会被完全加载…”

如果是后者,你可以创建一个Web应用程序,它只需要一个上下文监听器,使用Runtime来执行脚本。 如果你方便的话,你可以通过web.xml配置webapp来接受一个指向脚本执行的参数。

就个人而言,我只是看catalinas登录一个特定的字符串取决于你的设置和你寻找什么确切的阶段。

我需要这个从jenkins测试,如果从远程服务器的tomcat启动了系统检查。

until [[ `ssh -o StrictHostKeyChecking=no root@${DEPLOY_HOST} 'netstat -tulpn | grep 8005'` != "" ]] ; do echo "waiting for tomcat"; sleep 6; done