특정 코드를 실행하는 다른 Java 프로세스를 시작하는 프로그램을 작성 중입니다. 실행중인 클래스의 메서드를 호출하기 위해 해당 프로세스와 "대화"할 수있는 방법이 있습니까?다른 Java 프로세스에 액세스
답변
당신은 어떤 형태의 리모팅을 사용해야 할 것입니다. 그럴 수 있습니다 :
- RMI;
- 웹 서비스 (JAX-WS, 스프링 웹 서비스 등);
- 소켓;
- 임베디드 웹 컨테이너;
- 등
그들은 파이프 나 소켓을 통해 통신 할 수 있습니다. 자신의 통신 프로토콜을 만들거나 RMI과 같은 것을 사용하십시오.
RMI는 간단한 Java 원격 기술입니다. 그 자체로는 오류 발생시 장애 조치 (failover)와 같은 대규모 클라이언트 및 서버 시나리오를 수행 할 때 나타나는 경향이있는 문제를 해결하지 못합니다.
따라서 약간의 강점이 필요한 일반적인 패턴은 서버 측에서 일부 "응용 프로그램 서버"기술을 사용하는 것입니다. EJB 3 또는 Spring과 같은 프레임 워크를 사용하여 원격으로 액세스 할 수있는 서비스를 아주 빨리 노크하거나 JMS와 같은 기술을 사용할 수 있습니다.
필자의 권고안은 총알을 무릅 쓰고 즉시 RMI를 넘어서 며, 요즘은 앱 서버와 프레임 워크의 완성도가 낮고 저렴한 비용의 무료 App Servers가 제공되므로 비용이 많이 들지 않습니다.
또 다른 접근법은 Jini입니다.
IPC, 프로세스 간 통신이라고하는 전체 클래스가 있습니다. 공유 메모리와 파이프, 네트워크 통신 및 원격 프로 시저 프레임 워크에 이르기까지 다양합니다. 자바에서는 각각의 솔루션을 다양하게 제공합니다. 이미 네트워크에 익숙하다면 메시지를 이와 같이 전달할 수 있습니다. 그렇지 않으면 비동기 메시지 대기열이나 파이프를 설정하려는 경우 공유 메모리가 버그가 발생하기 쉽고 JINI와 같은 원격 절차가 설정이 너무 복잡합니다. 유지하라.
한 가지 더 많은 해결책이 있지만 그다지 간단하지는 않지만 JMS입니다. 의사 소통의 성격이 대부분 정보 또는 작은 물건을 전달하는 경우 유용 할 수 있습니다.
- 1. 서비스 설계 또는 다른 프로세스에 대한 액세스
- 2. Java 프로세스에 암호 보내기
- 3. 다른 드라이브의 Java 패키지에 액세스
- 4. JFrame을 다른 프로세스에 삽입 JFrame
- 5. C++에서 다른 프로세스에 연결하기
- 6. 다른 클래스의 Java Swing TextField에 대한 액세스
- 7. OpenSSL 소켓을 다른 프로세스에 전달하는 방법
- 8. Sendind는 다른 프로세스에 대한 포인터를 사용하고 있습니까?
- 9. Java에서 디렉토리를 압축하면 같은 파일을 사용하는 다른 프로세스에 영향을 줍니까?
- 10. Eclipse 빌드 프로세스에 연결?
- 11. 외부 프로세스에 대한 입력 살생
- 12. Java 무작위 액세스 맵
- 13. Java 애플릿에서 파일 액세스
- 14. Java Heap 간접 액세스
- 15. 실행중인 프로세스에 의한 웹 캠 액세스 제어 및 감지
- 16. .Net에서 낮은 무결성 프로세스에 대한 쓰기 액세스 추가
- 17. 기존 프로세스에 연결
- 18. Java : 런타임에 다른 이름의 배열 객체를 만들고 액세스/업데이트
- 19. 리눅스상의 다른 프로세스에 파일 기술자를 공유 할 수 있습니까? 아니면 프로세스에 로컬입니까?
- 20. Java; 또 다른 클래스
- 21. Java : 문자열을 사용한 정적 액세스?
- 22. 장기 실행 동기화 프로세스에 사용할 수있는 Java/Design Pattern은 무엇입니까?
- 23. 백그라운드 프로세스에 명령 보내기
- 24. Java 다중 스레드 데이터베이스 액세스
- 25. Java 응용 프로그램에서 로거에 액세스
- 26. 프로세스에 연결하는 방법
- 27. 리눅스 프로세스에 양방향 통신이 가능합니까?
- 28. 다른 함수의 액세스 변수
- 29. 다른 클래스의 메서드에 액세스
- 30. 다른 액세스 수준 제어