通过托管在同一Tomcat中的servlet重新启动Tomcat服务

时间:2011-03-17 02:34:31

标签: tomcat windows-services servlets

我想在Windows XP上重启tomcat服务,我创建了一个调用批处理文件的servlet

public void doGet (HttpServletRequest req, HttpServletResponse res) 
 throws ServletException, IOException  {

      Process p = Runtime.getRuntime().exec("c:\restart_tomcat.bat");
 }

在我的 restart_tomcat.bat

中添加了两行
   net stop "Tomcat6" 
   net start "Tomcat6"

请求servlet URL停止tomcat服务器但是它没有启动。但是当我运行批处理文件restart_tomcat.bat时,工作正常

2 个答案:

答案 0 :(得分:0)

试试这个

Runtime.getRuntime().exec("cmd.exe /c start c:\restart_tomcat.bat");

答案 1 :(得分:0)

当VM退出时,JVM启动的进程(例如,restart_tomcat.bat)可能也会被杀死,因此net start永远不会执行。 Tomcat使用Commons Daemon,遗憾的是,它不支持JVM重启。 (或者我不知道怎么做。)

快速入侵:将服务恢复模式设置为自动重启。

从长远来看,还有很多其他JVM as a Service options支持自我重启。