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

时间:2012-08-08 23:38:30

标签: java tomcat batch-file

我需要从运行在这个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已停止,但尚未启动。 如果我从命令行运行此批处理,它可以正常工作。

谢谢你的时间

3 个答案:

答案 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);

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

答案 2 :(得分:1)

同意Edmon。

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

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