如何从另一个程序启动一个程序

时间:2015-12-02 17:22:37

标签: java detection recovery

我有两个项目,project1和project2。

案例1: Project1和Project2在同一台机器上。如果project2崩溃或终止,Project1应该重新启动project2。

案例2: Project1和Project2在不同的机器上。如果project2崩溃或终止,Project1应该重新启动project2。

这些是java项目。

我应该如何执行上述任务?

修改

我在考虑以下解决方案:

  1. 如果项目在同一台机器上,那么我可以将Project2保留在Project1的类路径中,并从project1重新启动project2。但有个问题。然后这两个实体将成为一个单一的程序。
  2. 如果这些项目在不同的计算机上,那么我可以让第三个程序与project2一起运行,我将假设它永远不会崩溃。第三个项目可以重振项目2。
  3. 不确定,关于我的解决方案。您的输入是必需的。

2 个答案:

答案 0 :(得分:2)

我们使用RabbitMQ:Project1使用RabbitMQ和Project2发送有关任务的请求,发送有关他的作业的未通知RabbitMQ的通知。如果Project2在一段时间内没有发送通知(例如,在30秒内),Project1仅使用OS命令启动新的Project2实例,或者在某些机器(如Project1)中发送请求Project3,并仅使用OS命令启动Project1实例。

当然,您可以使用任何消息代理,而不仅仅是RabbitMQ。

  

但是,有一个问题。那么这两个实体将成为单一的   程序

不,最好将所有项目作为单独的程序启动,如果Project2出现Out Of Memory错误等,Project1也会死亡。使用ProcessBuilder等运行Java应用程序并不是一个问题。

答案 1 :(得分:1)

案例1:一个应用程序可以启动另一个:ProcessBuilder

Executing another application from Java

案例2:按要求准几乎不可能。你需要在项目2的机器上运行一些东西。