2016-12-12 8 views
1

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 

答えて

0

あなたはこのように、cmd.exeからのWindowsサービスコントローラ(sc)コマンドを使用することができます:

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

あなたがTomcatサービスがインストールされている提供されていることとTomcat8という名前の私が使用したコードのサンプル。インストール手順はhereで確認できます。

+0

非常にクール!できます。 –

+0

そして、Windowsサービスが実行されている(開始されている)かどうかをどのように問い合わせることができますか?私は既存の答えを見ましたが、うまくいきませんでした。編集した質問を見てください。 –

+0

@BinyaminRegevあなたが作成したプロセスが生きているかどうかをチェックするだけなので、 'process.isAlive'を使用することはできません(' cmd.exe'です。サービスのステータスを確認する方法については、このスレッドをチェックしてください:https://stackoverflow.com/questions/5388888/find-status-of-windows-service-from-java-application – Shem

関連する問題