如何从正在运行的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。