2008-09-24 15 views

Respuesta

4

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.
0

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.

3

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.

+0

buena manera simple de hacer esto en Java –

0

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



     } 
    } 
Cuestiones relacionadas