BATファイル(およびlinux/unixの.shファイル)を使用して、JavaプログラムからTomcatを起動/停止する方法を知っています。.batからではなく、JavaプログラムからTomcatをWindowsサービスとして起動/停止する方法は?
String command = "c:\program files\tomcat\bin\startup.bat";//for linux use .sh
Process child = Runtime.getRuntime().exec(command);
注:このコードはよりダイナミックにする使用CATALINA_HOMEそれは次のように行われています。
私はTomcatのWindowsサービスをJavaプログラムから起動/停止する方法を探しています。つまり、私はコントロールパネル - >と入力したかのように、JavaからTomcatを起動/停止したいと思っています。 - >サービスです。 このようにすることができますか、またはBATファイルは、私たちができる最大のものですか?
私は質問start windows service from javaを見ましたが、私は「SC」でそれをしようとしたとき、その後process.isAlive()
はfalse
常にだったと私は代わりに「SC」の「ネット」を使用する場合、その後process.isAlive()
は私がserviceName = "aliceinwonderland"
を使用した場合であっても、常に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
非常にクール!できます。 –
そして、Windowsサービスが実行されている(開始されている)かどうかをどのように問い合わせることができますか?私は既存の答えを見ましたが、うまくいきませんでした。編集した質問を見てください。 –
@BinyaminRegevあなたが作成したプロセスが生きているかどうかをチェックするだけなので、 'process.isAlive'を使用することはできません(' cmd.exe'です。サービスのステータスを確認する方法については、このスレッドをチェックしてください:https://stackoverflow.com/questions/5388888/find-status-of-windows-service-from-java-application – Shem