从java启动Windows服务

时间:2012-01-31 05:58:43

标签: java windows-services

我们如何从Java启动/停止Windows服务?例如,我想从Java启动和停止mysql Windows服务。

如果可以启动/停止,那么是否可以知道服务是否成功启动?

5 个答案:

答案 0 :(得分:23)

您可以使用字符串数组来制定命令提示符脚本以启动,停止和检查服务的状态:

// 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);

答案 1 :(得分:3)

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"命令。

答案 2 :(得分:2)

您可以使用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-

我不太确定监控状态,所以在这方面没有多大帮助

答案 3 :(得分:0)

您可以通过Runtime #exec方法执行以下命令。

净启动和净停止(完整信息位于:http://technet.microsoft.com/en-us/library/cc736564%28WS.10%29.aspx

可能你必须使用cmd / c net start,因为它会在shell下执行命令。

答案 4 :(得分:0)

你试过JNA吗?它有一些很好的api来做到这一点。

JNA非常活跃 - 您可以回答here提出具体问题。