Qual é a maneira rápida e confiável de monitorar um processo java?

eu tenho um processo que irá criar um processo java em outro jvm. Eles ficam na mesma máquina.

No caso de dois processos serem executados em máquinas diferentes, geralmente pode ser feito através de um detector de falhas. Mas no momento é apenas para desovar outro processo (usando o tempo de execução.getRuntime ()) e passar argumentos necessários para o processo infantil. O que eu posso pensar é executar o comando do sistema por exemplo jps ... ou ps -ef | grep ... o que seria melhor para detectar se um processo java falha que localiza na mesma máquina com o processo que o monitora?

Author: Alex Jones, 2011-04-06

3 answers

Os métodos Runtime.exec devolvem um Process. Você tem algum controle sobre o processo através desta instância: você pode matá-lo (destroy), esperar por sua terminação (waitFor) e obter o seu código de erro uma vez terminado (exitValue).

 0
Author: Laurent Pireyn, 2011-04-06 17:17:29

Dependendo do que você quer fazer, o objeto do processo pode funcionar.

Se quiser mais informações, sugiro que abra uma ligação entre eles. Desta forma você pode obter um status mais detalhado a qualquer momento. Já fiz isto antes e pode ser feito com umas aulas incrivelmente pequenas. Basta enviar e receber linhas de texto em ambas as extremidades.
 0
Author: Bill K, 2011-04-06 17:26:13

Eu usaria um script em execução na caixa que monitora o pid e se ele falhar sinaliza o processo pai para iniciar um novo processo filho. Quer através de um sinal, quer através de um tubo de escuta/tomada local.

 0
Author: Gandalf, 2011-04-06 17:31:59