0

我的系统上运行了两个 java 应用程序。第一个应用linux(centos)程序完成了处理,第二个应用程序控制了第一个应用程序。

控制含义(对从 2nd app 启动的 1st application 执行操作):

  • 开始
  • 停止
  • 重新开始

我的第一个应用程序在静态端口上运行10001

如何从我的第二个应用程序执行这些操作?我发现这篇文章让我更加接近。

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

如何获取PID在 Port 上运行的应用程序(10001)

代码:- 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}'

4

1 回答 1

0

您可以创建一个runnable jar程序并使用以下命令从控制器启动它: Runtime.getRuntime().exec("java -jar JAR-PATHNAME");

在您的第一个应用程序中,只需process id使用以下语句获取PID.ManagementFactory.getRuntimeMXBean().getName().substring(0, ManagementFactory.getRuntimeMXBean().getName().indexOf("@")

将其写入PID文件并controller从文件中读取。STOP现在可以使用killlinux 中的命令来实现(以与运行命令相同的方式运行它java -jar

于 2013-09-03T12:07:33.307 回答