我需要从运行在这个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已停止,但尚未启动。 如果我从命令行运行此批处理,它可以正常工作。
谢谢你的时间答案 0 :(得分:4)
您所询问的内容并非完全安全且可行,但请查看Tomcat管理器API,该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
答案 1 :(得分:3)
这有效:
String fileName = "C:\\Tomcat 7.0\\bin\\restart.bat";
String[] commands = {"cmd", "/c", "start", "\"DummyTitle\"",fileName};
Runtime.getRuntime().exec(commands);
答案 2 :(得分:1)
同意Edmon。
Tomcat是容器的提供者。每个容器应该彼此独立地行动,即使它们调用另一个容器提供的服务。这一切都应该通过RMI或类似的方式完成。
就像Edmon也建议的那样,你可以使用API调用,但是再次......听起来很糟糕。相反,质疑为什么需要重新启动。然后,如果没有解决方法,请使用Tomcat管理器。