2009-08-20 7 views
1

특정 코드를 실행하는 다른 Java 프로세스를 시작하는 프로그램을 작성 중입니다. 실행중인 클래스의 메서드를 호출하기 위해 해당 프로세스와 "대화"할 수있는 방법이 있습니까?다른 Java 프로세스에 액세스

답변

7

당신은 어떤 형태의 리모팅을 사용해야 할 것입니다. 그럴 수 있습니다 :

  • RMI;
  • 웹 서비스 (JAX-WS, 스프링 웹 서비스 등);
  • 소켓;
  • 임베디드 웹 컨테이너;
1

그들은 파이프 나 소켓을 통해 통신 할 수 있습니다. 자신의 통신 프로토콜을 만들거나 RMI과 같은 것을 사용하십시오.

0

RMI는 간단한 Java 원격 기술입니다. 그 자체로는 오류 발생시 장애 조치 (failover)와 같은 대규모 클라이언트 및 서버 시나리오를 수행 할 때 나타나는 경향이있는 문제를 해결하지 못합니다.

따라서 약간의 강점이 필요한 일반적인 패턴은 서버 측에서 일부 "응용 프로그램 서버"기술을 사용하는 것입니다. EJB 3 또는 Spring과 같은 프레임 워크를 사용하여 원격으로 액세스 할 수있는 서비스를 아주 빨리 노크하거나 JMS와 같은 기술을 사용할 수 있습니다.

필자의 권고안은 총알을 무릅 쓰고 즉시 RMI를 넘어서 며, 요즘은 앱 서버와 프레임 워크의 완성도가 낮고 저렴한 비용의 무료 App Servers가 제공되므로 비용이 많이 들지 않습니다.

0

또 다른 접근법은 Jini입니다.

0

IPC, 프로세스 간 통신이라고하는 전체 클래스가 있습니다. 공유 메모리와 파이프, 네트워크 통신 및 원격 프로 시저 프레임 워크에 이르기까지 다양합니다. 자바에서는 각각의 솔루션을 다양하게 제공합니다. 이미 네트워크에 익숙하다면 메시지를 이와 같이 전달할 수 있습니다. 그렇지 않으면 비동기 메시지 대기열이나 파이프를 설정하려는 경우 공유 메모리가 버그가 발생하기 쉽고 JINI와 같은 원격 절차가 설정이 너무 복잡합니다. 유지하라.

0

한 가지 더 많은 해결책이 있지만 그다지 간단하지는 않지만 JMS입니다. 의사 소통의 성격이 대부분 정보 또는 작은 물건을 전달하는 경우 유용 할 수 있습니다.

관련 문제