一次只有一个应用程序实例

use*_*434 0 java

我的朋友在接受采访时提到了以下问题:

  1. 您将如何确保一次只运行一个应用程序实例(如tomcat)?

  2. 当启动另一个应用程序实例时,应显示一条错误消息,指出一个实例已在运行

  3. 当应用程序异常终止时,我们应该能够启动应用程序.

我对上述问题的回答涉及到港口.有没有人对上述问题有"更深入"的理解?

Ort*_*ier 12

我建议你使用"PID文件".

例如,您可以在启动应用程序时创建一个PID文件(例如,在下面/var/run/mypgm.pid).在该pid文件中,您存储应用程序的PID(进程ID).当您关闭应用程序(清理)时,您删除该PID文件.

现在,当您第二次启动应用程序时,检查该PID文件是否存在.如果文件存在,您有两个选择:

  • 您的应用程序仍在运行
  • 您的应用程序崩溃,pid文件仍然存在.

现在,您可以解析该PID文件,以检查是否仍有运行该PID的进程.如果是这样,您将显示错误消息.如果没有,您只需删除PID文件并启动您的应用程序.