如何从 Java 程序而不是仅从 .bat 将 start/stop Tomcat 作为 windows 服务?
How to start/stop Tomcat as a windows service from a Java program rather than just from a .bat?
我知道如何使用 BAT 文件(以及 [=52= 中的 .sh 文件)从 Java 程序 start/stop Tomcat ]).它是这样完成的:
String command = "c:\program files\tomcat\bin\startup.bat";//for linux use .sh
Process child = Runtime.getRuntime().exec(command);
注意:使用CATALINA_HOME使这段代码更加动态。
现在我正在寻找一种从 Java 程序访问 start/stop Tomcat 的 Windows 服务 的方法。我的意思是,我想从 Java start/stop Tomcat 就好像我输入了 控制面板 --> 管理工具 --> 服务。
能不能这样,或者用BAT文件是我们能做到的最大吗?
我看到了问题 start windows service from java,但是当我用 "sc" 尝试时,process.isAlive()
是 ALWAYS false
并且当我使用 "net" 而不是 "sc" 时,即使我使用 serviceName = "aliceinwonderland"
,process.isAlive()
也总是 true
。我使用的代码示例:
//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
您可以使用来自 cmd.exe
的 Windows 服务控制器 (sc
) 命令,如下所示:
String[] script = {"cmd.exe", "/c", "sc", "start", "Tomcat8"};
Runtime.getRuntime().exec(script);
前提是您安装了 Tomcat 服务并命名为 Tomcat8
。您可以查看安装说明 here.
我知道如何使用 BAT 文件(以及 [=52= 中的 .sh 文件)从 Java 程序 start/stop Tomcat ]).它是这样完成的:
String command = "c:\program files\tomcat\bin\startup.bat";//for linux use .sh
Process child = Runtime.getRuntime().exec(command);
注意:使用CATALINA_HOME使这段代码更加动态。
现在我正在寻找一种从 Java 程序访问 start/stop Tomcat 的 Windows 服务 的方法。我的意思是,我想从 Java start/stop Tomcat 就好像我输入了 控制面板 --> 管理工具 --> 服务。 能不能这样,或者用BAT文件是我们能做到的最大吗?
我看到了问题 start windows service from java,但是当我用 "sc" 尝试时,process.isAlive()
是 ALWAYS false
并且当我使用 "net" 而不是 "sc" 时,即使我使用 serviceName = "aliceinwonderland"
,process.isAlive()
也总是 true
。我使用的代码示例:
//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
您可以使用来自 cmd.exe
的 Windows 服务控制器 (sc
) 命令,如下所示:
String[] script = {"cmd.exe", "/c", "sc", "start", "Tomcat8"};
Runtime.getRuntime().exec(script);
前提是您安装了 Tomcat 服务并命名为 Tomcat8
。您可以查看安装说明 here.