servicio running procrun manager example creator convert como commons applications java windows-services

procrun - running java applications as a windows service



iniciar el servicio de Windows desde Java (5)

¿Cómo podemos iniciar / detener un servicio de Windows desde Java? Por ejemplo, me gustaría iniciar y detener el servicio de Windows mysql desde Java.

Si es posible iniciar / detener, ¿es posible saber si el servicio se inició con éxito o no?


¿Probaste JNA ? Tiene un buen api para hacer esto.

JNA es muy activa en SO, podría volver here con preguntas específicas.


Puede ejecutar comandos del sistema desde java usando el comando exec (). Aquí puede encontrar un tutorial simple sobre el mismo: http://www.java-samples.com/showtutorial.php?tutorialid=8

Ahora puede usar los comandos del sistema para iniciar / detener servicios de Windows: aquí puede encontrar una muestra de los mismos

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

No estoy muy seguro de monitorear el estado, por lo que no puedo ser de mucha ayuda al respecto



Puede formular un script de solicitud de comando para iniciar, detener y verificar el estado de un servicio utilizando una matriz de cadenas:

// 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/""};

Ejecute scripts utilizando lo siguiente:

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

Funcionó bien ... en lugar del comando "sc" use "net".