Estoy buscando una biblioteca que me permita buscar el estado de un servicio de Windows para verificar que el servicio se haya iniciado y se esté ejecutando. Miré en la biblioteca de Sigar, pero es GPL y por lo tanto no puedo usarlo. Se requiere una licencia comercial o BSD (ish), ya que se incluirá en el software comercial.¿Hay alguna manera, en Java, de verificar el estado de un servicio de Windows?
Respuesta
Si nada de esto ayuda, trate de pensar en un enfoque ligeramente diferente (si se puede, por supuesto), por ejemplo:
- Hay un montón de software libre/no libre, que hace un seguimiento, incluyendo Supervisión del servicio de Windows (por ejemplo, nagios, Zabbix, etc.). Estos monitores suelen tener una API abierta donde su aplicación Java podría integrarse de diferentes maneras.
- Si tiene el control sobre la aplicación de servicio dependiente, exponga otra forma diferente para que su aplicación Java la revise (por ejemplo, ejecute un escucha ficticio en un puerto, cree un archivo, etc.). Los servicios de Windows no son una plataforma multiplataforma, por lo tanto, no es algo que espere recibir pronto.
No conozco ninguna biblioteca, pero dependiendo de la cantidad de detalles que necesite obtener, puede obtener algunos comandos de shell y analizar el resultado.
NET START servicename
o bien iniciar el servicio, o le devolverá un mensaje de error que le indica su ya comenzó. Sin embargo, no conozco ningún comando que te otorgue el estado.
No creo que haya ninguna forma pura de Java para hacer esto porque algunos sistemas operativos no tienen la noción de "servicios" como lo hace Windows. En nuestros proyectos, escribimos un contenedor sobre las llamadas al comando "sc" desde la línea de comandos. Para obtener el estado de un servicio, que puede hacer: consulta
sc \\ alguna por ordenador "mi nombre de servicio"
que tendrá que analizar manualmente la salida pero es bastante sencillo.
Creo que esta es la mejor manera de verificar el estado del servicio.
import java.util.*;
import java.sql.*;
import java.io.*;
import java.text.*;
public class doscmd
{
public static void main(String args[])
{
try
{
Process p=Runtime.getRuntime().exec("sc query browser"); //sc query is commond and browser is the name of service
BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream()));
String line=reader.readLine();
while(line!=null)
{
if(line.trim().startsWith("STATE"))
{
if (line.trim().substring(line.trim().indexOf(":")+1,line.trim().indexOf(":")+4).trim().equals("1"))
System.out.println("Stopped");
else
if (line.trim().substring(line.trim().indexOf(":")+1,line.trim().indexOf(":")+4).trim().equals("2"))
System.out.println("Startting....");
else
if (line.trim().substring(line.trim().indexOf(":")+1,line.trim().indexOf(":")+4).trim().equals("3"))
System.out.println("Stopping....");
else
if (line.trim().substring(line.trim().indexOf(":")+1,line.trim().indexOf(":")+4).trim().equals("4"))
System.out.println("Running");
}
line=reader.readLine();
}
}
catch(IOException e1) { }
}
}
- 1. ¿Hay alguna manera de captar el estado real de System.Random?
- 2. JS ¿Hay alguna manera de verificar si existe un evento?
- 3. ¿Hay alguna manera de verificar si el puntero está colgando?
- 4. ¿Hay alguna manera de verificar si el anclaje está activo?
- 5. ¿Hay alguna manera de detectar el estado del monitor en Windows (encendido o apagado)?
- 6. necesita una manera de comprobar el estado del servicio de Windows mediante programación
- 7. ¿Hay alguna manera de configurar Fiddler para interceptar llamadas HTTP desde un servicio de Windows?
- 8. ¿Hay alguna manera de detener el tiempo. ¿Duerme en Windows?
- 9. ¿Hay alguna manera de verificar los derechos de administrador en Windows con Perl?
- 10. ¿Hay alguna manera en el depurador de Eclipse de ser notificado cuando cambia el estado de un objeto de Java?
- 11. ¿Hay alguna manera de procesar SVG en Windows Forms?
- 12. ¿Hay alguna manera de verificar el historial de trabajo registrado por un usuario específico en JIRA?
- 13. ¿Hay alguna manera de verificar el tamaño de pila disponible antes de una llamada recursiva? (C#)
- 14. ¿Hay alguna manera de verificar si hay enlaces simbólicos apuntando a un directorio?
- 15. Verificar el estado de un intermediario ActiveMQ
- 16. ¿Hay alguna manera de verificar si un proceso de impresión fue exitoso?
- 17. ¿Hay alguna forma de iniciar el proceso en estado suspendido?
- 18. ¿Hay alguna manera de imitar o en genéricos de Java
- 19. ¿Hay alguna manera de verificar si dos objetos tienen alias en Java?
- 20. ¿Hay alguna manera de verificar la codificación del conjunto de caracteres del archivo .txt con Java?
- 21. ¿Hay alguna manera de verificar si existe un directorio en los archivos de configuración de Apache?
- 22. ¿Hay alguna manera de cambiar el comportamiento de HttpWebRequest en los códigos de estado 400/500?
- 23. ¿Encuentra el estado del servicio de Windows desde la aplicación Java?
- 24. ¿Hay alguna manera de abatir un AutoBean de GWT?
- 25. estado de git: ¿hay alguna manera de mostrar los cambios solo en un directorio específico?
- 26. ¿Alguna manera de anular el nombre de servicio de Windows .NET sin volver a compilar?
- 27. ¿Hay alguna manera más simple de verificar valores múltiples contra un valor en un enunciado if?
- 28. ¿Alguna manera de verificar funciones anónimas?
- 29. ¿hay alguna manera de usar tr /// (o equivalente) en java?
- 30. ¿Hay alguna manera de implementar tipos algebraicos en Java?
buena manera simple de hacer esto en Java –