2013-09-03 1 views
0

linux(centos) 시스템에서 실행중인 두 개의 Java 응용 프로그램이 있습니다. 첫 번째 응용 프로그램은 처리 및 두 번째 응용 프로그램을 수행했습니다. 제어 첫 번째 응용 프로그램.다른 Java 응용 프로그램에서 Java 응용 프로그램을 중지/시작/다시 시작

제어의 의미는 (2 응용 프로그램에서 시작된 첫번째 응용 프로그램에 대한 작업을 수행) :

  • START
  • STOP
  • RESTART

내 첫번째 응용 프로그램이 고정 포트에서 실행 10001

두 번째 응용 프로그램에서 어떻게 이러한 작업을 수행 할 수 있습니까? ation? 나는이 기사를 찾았는데 다소 더 가까워졌다.

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

어떻게 포트 (10001)에서 실행중인 응용 프로그램의 PID받을 수 있나요?

코드 : - eSocketServer.jar은 ps -ef | grep eSocketServer.jar | awk '{print $2}'

+0

왜 downvote? 의견? – Shaggy

답변

0

당신은의 runnable 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(); 

그것은 같은 명령을 쉘 프롬프트에 의해 실행되는 경우가 나에게 출력을 제공 나던입니다 프로그램을 시작하고 컨트롤러에서 시작 : Runtime.getRuntime().exec("java -jar JAR-PATHNAME");

첫 번째 앱에서 다음 문장을 사용하여 process id을 얻으십시오. 그러면 PID이 반환됩니다. ManagementFactory.getRuntimeMXBean().getName().substring(0, ManagementFactory.getRuntimeMXBean().getName().indexOf("@")

PID을 파일에 쓰고 파일에서 controller을 읽습니다. STOP 지금 당신이 java -jar Section 명령을 실행 한 동일한 방식으로 실행 (리눅스에서 kill 명령을 사용하여 구현 될 수있다.

+0

않습니다 시작 및 다시 시작?'그리고 난 내 1을 중지 할 수 있습니다'에 대해이 같은 작업 (kill) 대신 System.exit (0)' – Shaggy

+0

정확한 구현 요구 사항에 따라 접근 방식이 변경 될 수 있습니다. 하나의 제안은 많은 접근 방식 중 하나 일뿐입니다. – Aneesh

관련 문제