2012-02-20 2 views
3

내 응용 프로그램에서 사용하는 포트를 가능한 작게 알려진 포트로 제한 할 수 있기를 바랍니다. 응용 프로그램은 Java RMI를 사용하여 원격 서버와 통신합니다. 레지스트리는 표준 인 포트 1099로 내보내집니다. 그러나 다양한 원격 객체를 내보내는 데 사용되는 포트가 단기간에 여러 연결을 통해 동일하게 유지되지만 항상 일관성있는 것은 아닙니다. 내 무식한 추측에는 서버 소켓의 캐싱 (caching)이 있습니다.RMI를 하나의 포트로 제한하는 것에 대한 시사점

클라이언트 응용 프로그램을 설치하는 사용자가 방화벽에서 가능한 한 적은 포트만 열어야하므로 잘 알려진 몇몇 포트에서 항상 연결이 이루어 지도록하고 싶습니다. RMISocketFactory를 사용자 지정 구현으로 변경하고 항상 알려진 포트를 사용하기 위해 createServerSocket 메서드를 재정의하여이 작업을 수행 할 수있는 것 같습니다. 그러나 다음과 같은 몇 가지 질문이 제기됩니다.

  • 이것은 확장성에 어떤 영향을 줍니까? 한 번에 한 사람 만 연결할 줄 알았지 만 여러 개의 동시 연결을 차단하지 않으면 좋겠다.
  • 이러한 원격 개체를 레지스트리와 동일한 포트에 바인딩 할 수 있습니까? 내 직감은 포트가 이미 createRegistry 호출에 바인딩되어 있으므로 아니오라고 말합니다.
  • 내가 알지 못하는 다른 의미가 있습니까?
+0

이것은 아마도 질문의 절반에 답변해야합니다. http://stackoverflow.com/questions/7040986/rmi-exportobjectremote-obj-port-createregistryport – jtahlborn

답변

3

여러 개의 동시 연결을 차단하지 않습니까?

번호

은 레지스트리와 동일한 포트에서 이러한 원격 객체를 결합 할 수 있습니까? 나의 직감은 포트가 이미 createRegistry() 호에 묶여있을 것이므로 아니오라고 말합니다.

, 같은 당신이 LocateRegistry.createRegistry()을 통해, 같은 JVM에서 레지스트리를 시작한만큼 관련된 모든 서버 소켓 팩토리는 equal()을만큼.

내가 알지 못하는 다른 의미가 있습니까?

아무런 관련이 없습니다. RMI는 null 또는 동등한 서버 소켓 팩토리를 가지는 리모트 오브젝트 간의 포토 공유를 실시해, TCP는 같은 포토에의 복수 접속 간의 포토 공유를 실시합니다.

관련 문제