簡體   English   中英

從另一個Java應用程序停止/啟動/重新啟動Java應用程序

[英]stop/start/restart java application from another java application

我在linux(centos)系統上運行了兩個Java應用程序。第一個應用程序完成了處理,第二個應用程序CONTROLS第一個應用程序。

控制含義(對從第二個應用啟動的第一個應用執行操作):

  • 開始
  • 重新開始

我的第一個應用程序在靜態端口10001上運行

如何從第二個應用程序執行這些操作? 我發現這些文章使我更加接近。

https://stackoverflow.com/a/14340719/1169180https://stackoverflow.com/a/138098/1169180

如何獲取在端口(10001)上運行的應用程序的PID

代碼:-eSocketServer.jar是我的第一個應用程序jar文件

Process p = Runtime.getRuntime().exec(
                    "ps -ef | grep eSocketServer.jar | awk '{print $2}'");
BufferedReader br = new BufferedReader(new InputStreamReader(
                    p.getInputStream()));
while ((br.readLine()) != null)
System.out.println("line: " + br.readLine());
p.waitFor();
System.out.println("exit: " + p.exitValue());
p.destroy();

當shell提示符ps -ef | grep eSocketServer.jar | awk '{print $2}'執行相同的命令時,它沒有給我任何輸出 ps -ef | grep eSocketServer.jar | awk '{print $2}'

您可以創建程序的runnable jar並使用以下命令從控制器啟動它: Runtime.getRuntime().exec("java -jar JAR-PATHNAME");

在您的第一個應用程序中,只需使用以下語句獲取process id ,這將返回PID ManagementFactory.getRuntimeMXBean().getName().substring(0, ManagementFactory.getRuntimeMXBean().getName().indexOf("@")

將此PID寫入文件,並讓controller從文件中讀取它。 現在可以在Linux中使用kill命令來實現STOP (以與運行java -jar commmand相同的方式運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM