如何从Java程序而不是从.bat启动/停止Tomcat作为Windows服务?

时间:2016-12-12 17:10:39

标签: java windows tomcat service exec

我知道如何使用 BAT文件(以及linux / unix中的.sh文件)从Java程序启动/停止Tomcat。这是这样做的:

String command = "c:\program files\tomcat\bin\startup.bat";//for linux use .sh
Process child = Runtime.getRuntime().exec(command);

注意:使用 CATALINA_HOME 使此代码更具动态性。

现在我正在寻找一种从Java程序启动/停止Tomcat的 Windows服务的方法。我的意思是,我想从Java启动/停止Tomcat,就像我进入控制面板 - > 管理工具 - > 服务。 可以这样做,还是使用 BAT文件是我们可以做的最大值?

我看到问题start windows service from java,但当我用“sc”尝试时,process.isAlive() 总是 false当我用“net”代替“sc”然后process.isAlive()总是true,即使我使用serviceName = "aliceinwonderland"。我使用的代码示例:

//String servicename = "Dhcp"; // real service that exists and started.
String serviceName = "aliceinwonderland"; // fiction, no such service
//String[] script = {"cmd.exe", "/c", "sc", "query", serviceName, "|", "find", "/C", "\"RUNNING\""};
String[] script = {"cmd.exe", "/c", "net", "query", serviceName, "|", "find", "/C", "\"RUNNING\""};
Process process = Runtime.getRuntime().exec(command);
boolean alive = process.isAlive(); // using "sc" = false; using "net" = true

1 个答案:

答案 0 :(得分:0)

您可以使用sc中的Windows服务控制器(cmd.exe)命令,如下所示:

String[] script = {"cmd.exe", "/c", "sc", "start", "Tomcat8"}; 
Runtime.getRuntime().exec(script);

如果已安装Tomcat服务并命名为​​Tomcat8,则提供此功能。您可以查看安装说明here