如何从正在运行的webapp重启tomcat?

我需要从运行在这个tomcat上的webapp重启tomcat服务。 所以我正在尝试执行停止tomcat服务的脚本,然后启动它:

echo "before stop" >> textfile.txt NET STOP "Tomcat7" :loop timeout 3 SC query Tomcat7 | FIND "STATE" | FIND "RUNNING" > NUL IF ERRORLEVEL 1 ( goto start ) ELSE ( goto loop ) :start NET START "Tomcat7" 

Java代码:

  String command = "C:\\Tomcat 7.0\\bin\\restart.bat"; Process p = Runtime.getRuntime().exec(command); 

Tomcat已停止,但尚未启动。 如果我从命令行运行此批处理,它可以正常工作。

感谢您的时间

您所要求的并不是完全安全且可能的,但请查看Tomcat管理器API,它允许您以编程方式操作Tomcat部署和实例:

http://tomcat.apache.org/tomcat-7.0-doc/api/index.html

http://tomcat.apache.org/tomcat-7.0-doc/api/org/apache/catalina/manager/host/HostManagerServlet.html

这工作:

  String fileName = "C:\\Tomcat 7.0\\bin\\restart.bat"; String[] commands = {"cmd", "/c", "start", "\"DummyTitle\"",fileName}; Runtime.getRuntime().exec(commands); 

取自http://www.rgagnon.com/javadetails/java-0014.html

同意Edmon。

Tomcat是容器的提供者。 每个容器应该彼此独立地行动,即使它们调用另一个容器提供的服务。 这应该都是通过RMI或类似的方式完成的。

就像Edmon也建议的那样,你可以使用API​​调用,但是再次……听起来很糟糕。 相反,质疑为什么需要重新启动。 然后,如果没有解决方法,请使用Tomcat Manager。