我试图在java应用程序中通过startup.bat启动tomcat。我在ProcessBuilder中执行start命令。问题是startup.bat只在java中的所有线程(包括主线程)在主线程上使用Thread.sleep至少10秒完成后运行。另一个问题是在startup.bat开始运行后,System.exit(0)无效。甚至eclipse控制台中的停止按钮也不起作用。退出程序的唯一方法是手动关闭start up.bat窗口。我如何通过java优雅地启动和停止tomcat。我不想通过Tomcat API和jar嵌入tomcat。在我的项目文件夹中提取了tomcat 7。
答案 0 :(得分:0)
尝试在Java ProcessBuilder中运行这些命令,确保执行workdir设置为$ tomcat / bin / folder。这应该在一个单独的过程中启动tomcat。
启动Tomcat cmd.exe /C catalina.bat start
停止Tomcat cmd.exe /C catalina.bat stop
您的主应用程序可以附加一个关闭钩子,其中运行stop命令,请参阅此主题。 Useful example of a shutdown hook in Java?
答案 1 :(得分:0)
使用它,对我有用
Process child = Runtime.getRuntime().exec("c:\program files\tomcat\bin\startup.bat");