Comment savoir si Java s'exécute en tant que service Windows et si l'indicateur-Xrs est utilisé


Un problème récurrent avec notre application Java sous Windows est que les clients l'exécutent en tant que service Windows sans spécifier l'indicateur Java-Xrs. De cette façon, lorsque l'administrateur déconnecte la machine Windows, le processus Java reçoit un signal de terminaison et se termine, provoquant ainsi ce qui semble être une situation de production aléatoire.

Je voudrais ajouter aux fichiers journaux du serveur et à l'outil de surveillance un avertissement concernant ce problème de configuration. Pour ce faire je voudrais comme de savoir: 1. Mon application Java s'exécute - t-elle en tant que service Windows ? 2. Est l'indicateur-Xrs spécifié dans le cadre de java.commande exe ? Toute les idées sont les bienvenues.

Author: lyaffe, 2013-04-25

1 answers

Trouvé comment vérifier l'indicateur-Xrs, encore besoin de déterminer s'il s'exécute en tant que service:

import java.lang.management.ManagementFactory;
import java.util.List;

public class GetCommandLineFlags {

   public static void main(String[] args) {
       System.out.println(new GetCommandLineFlags().isReducedSignal());
   }

   public boolean isReducedSignal() {
      List<String> flags = ManagementFactory.getRuntimeMXBean().getInputArguments();
      for (String flag : flags) {
         if ("-Xrs".equals(flag)) {
            return true;
         }
      }
      return false;
   }

}
 1
Author: lyaffe, 2013-04-25 11:59:31