繁体   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