Какой быстрый и надежный способ контролировать процесс Java? - PullRequest
0 голосов
/ 06 апреля 2011

У меня есть процесс, который создаст процесс Java в другой jvm. Они остаются на одной машине.

Насколько я понимаю, в случае, когда два процесса выполняются на разных машинах, обычно это можно сделать с помощью детектора сбоев. Но на данный момент это просто порождение другого процесса (с помощью Runtime.getRuntime ()) и передача необходимых аргументов дочернему процессу. Я могу думать о том, чтобы выполнить системную команду, например, jps ... или ps -ef | grep ... Что было бы лучше определить, происходит ли сбой процесса Java, который находится на той же машине, что и процесс, который его отслеживает?

Ответы [ 3 ]

0 голосов
/ 06 апреля 2011

В зависимости от того, что вы хотите сделать, объект Process может работать.

Если вам нужна дополнительная информация, я предлагаю открыть сокетное соединение между ними. Таким образом, вы можете получить более подробный статус в любое время.

Я делал это раньше, и это можно сделать с парой невероятно маленьких классов. Просто отправляйте и получайте строки текста на обоих концах.

0 голосов
/ 06 апреля 2011

Я бы использовал скрипт, запущенный на поле, которое отслеживает pid, и в случае его сбоя сигнализирует родительскому процессу о запуске нового дочернего процесса. Либо через сигнал, либо через прослушивающий канал / локальную розетку.

0 голосов
/ 06 апреля 2011

Методы Runtime.exec возвращают Process.У вас есть некоторый контроль над процессом через этот экземпляр: вы можете уничтожить его (destroy), дождаться его завершения (waitFor) и получить его код ошибки после завершения (exitValue).

...