簡體   English   中英

從java啟動Windows服務

[英]start windows service from java

我們如何從Java啟動/停止Windows服務? 例如,我想從Java啟動和停止mysql Windows服務。

如果可以啟動/停止,那么是否可以知道服務是否成功啟動?

您可以使用字符串數組來制定命令提示符腳本以啟動,停止和檢查服務的狀態:

// start service
String[] script = {"cmd.exe", "/c", "sc", "start", SERVICE_NAME};

// stop service
String[] script = {"cmd.exe", "/c", "sc", "stop", SERVICE_NAME};

// check whether service is running or not
String[] script = {"cmd.exe", "/c", "sc", "query", APP_SERVICE_NAME, "|", "find", "/C", "\"RUNNING\""};

使用以下命令執行腳本:

Process process = Runtime.getRuntime().exec(script);
import java.io.*;
import java.util.*;

public class ServiceStartStop {
    public static void main(String args[]) {
        String[] command = {"cmd.exe", "/c", "net", "start", "Mobility Client"};
        try {
            Process process = new ProcessBuilder(command).start();
            InputStream inputStream = process.getInputStream(); 
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                System.out.println(line);
            }
        } catch(Exception ex) {
            System.out.println("Exception : "+ex);
        }
    }
}

它工作得很好....而不是“sc”使用“net”命令。

您可以使用exec()命令從java執行系統命令 - 可以在此處找到相同的簡單教程 - http://www.java-samples.com/showtutorial.php?tutorialid=8

現在您可以使用系統命令來啟動/停止Windows服務 - 可以在此處找到相同的示例

http://www.windowsitpro.com/article/registry2/how-can-i-stop-and-start-services-from-the-command-line-

我不太確定監控狀態,所以在這方面沒有多大幫助

您可以通過Runtime #exec方法執行以下命令。

凈啟動和凈停止(完整信息請訪問: http//technet.microsoft.com/en-us/library/cc736564%28WS.10%29.aspx

可能你必須使用cmd / c net start,因為它會在shell下執行命令。

你試過JNA嗎? 它有一些很好的api來做到這一點。

JNA在SO方面非常活躍 - 你可以帶着具體問題回到這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM