2010-03-27 2 views
1

동일한 기계에서 실행중인 2 개/여러 JVM이 RMI없이 통신 할 수있는 방법은 무엇입니까?RMI가없는 두 JVM 사이의 통신?

Thx

+0

RMI의 문제점은 무엇입니까? – Thilo

+0

RMI에 아무런 문제가 없으며, 단점은 모든 데이터가 WireShark와 같은 도구 (예 : 메서드 이름/매개 변수)를 사용하여 해킹 될 수 있다는 것입니다. – JavaUser

+8

동일한 컴퓨터에서 약 두 개의 JVM을 요구하고 있습니다. WireShark를 사용하여 패킷을 분석 할 수 있다면 해당 패킷이 로컬 호스트에 있기 때문에 실제 머신 *에서 WireShark를 사용하고 있음을 의미합니다. 물리적 인 기계에서 * 코드에 액세스하면 패킷 분석기 도구가 해킹에 대한 걱정을 덜어줍니다. – Nate

답변

1

소켓, 원격 EJB, 웹 서비스 ... 내 머리 위로부터. 당신의 구체적인 사건은 무엇입니까?

2

메서드를 통신하거나 호출합니까?

항상 소켓을 열고 임의의 프로토콜을 통해 직접 통신 할 수 있으며 개체를 직렬화 된 형식으로 앞뒤로 전달할 수도 있습니다. 대부분의 운영 체제에서 동일한 시스템의 프로세스 간 소켓 연결은 시스템 간의 연결보다 빠르고 효율적입니다.

시작하기 좋은 곳은 JMS 튜토리얼입니다. JMS는 브로커 프로세스를 추가로 필요로하지만 JVM 간의 통신을 하나의 케이크로 만듭니다.

또한 J2EE 및 HTTP 기반 XML-RPC와 같은 것들이 있지만 사용자의 요구가 과도 할 수 있습니다.

+0

+1, 대부분의 JMS 브로커는 Java 응용 프로그램에 임베드되어 실행할 수도 있습니다 (이것이 의미가있는 경우) – mjn

3

Wireshark 등의 스누핑에 대한 JVM 대 JVM 통신의 보안이 염려되는 경우 SSL 보안 채널 또는 이와 동등한 방식으로 RMI 통신을 수행하는 것이 좋습니다.

그러나 누군가가 두 대의 JVM과 동일한 시스템에서 Wireshark를 실행할 수 있다면 문제를 해결하기에 충분하지 않을 수 있습니다. 그리고 RMI에 대한 대안을 사용하는 것이 당신을 더욱 안전하게 할 수는 없습니다.

처음에는 악의적 인 사용자가 Wireshark를 실행할 수있는 충분한 권한을 가지고 있으면 보안 채널 사용을 방해하는 방식으로 JVM을 방해 할 수있는 권한을 거의 갖게되었습니다. 예를 들어 JVM에 디버거를 연결하거나 파일 시스템을 통해 응용 프로그램 코드를 해킹하여 보호하려는 정보를 유출 할 수 있습니다.

간단히 말해서, RMI를 사용하는 것이 더 나을 것이고 나쁜 사람이 Wireshark (기타)를 실행하기 위해 컴퓨터에 들어갈 수 없도록하는 데 시간을 할애해야합니다.