내 응용 프로그램에서 사용하는 포트를 가능한 작게 알려진 포트로 제한 할 수 있기를 바랍니다. 응용 프로그램은 Java RMI를 사용하여 원격 서버와 통신합니다. 레지스트리는 표준 인 포트 1099로 내보내집니다. 그러나 다양한 원격 객체를 내보내는 데 사용되는 포트가 단기간에 여러 연결을 통해 동일하게 유지되지만 항상 일관성있는 것은 아닙니다. 내 무식한 추측에는 서버 소켓의 캐싱 (caching)이 있습니다.RMI를 하나의 포트로 제한하는 것에 대한 시사점
클라이언트 응용 프로그램을 설치하는 사용자가 방화벽에서 가능한 한 적은 포트만 열어야하므로 잘 알려진 몇몇 포트에서 항상 연결이 이루어 지도록하고 싶습니다. RMISocketFactory를 사용자 지정 구현으로 변경하고 항상 알려진 포트를 사용하기 위해 createServerSocket
메서드를 재정의하여이 작업을 수행 할 수있는 것 같습니다. 그러나 다음과 같은 몇 가지 질문이 제기됩니다.
- 이것은 확장성에 어떤 영향을 줍니까? 한 번에 한 사람 만 연결할 줄 알았지 만 여러 개의 동시 연결을 차단하지 않으면 좋겠다.
- 이러한 원격 개체를 레지스트리와 동일한 포트에 바인딩 할 수 있습니까? 내 직감은 포트가 이미
createRegistry
호출에 바인딩되어 있으므로 아니오라고 말합니다. - 내가 알지 못하는 다른 의미가 있습니까?
이것은 아마도 질문의 절반에 답변해야합니다. http://stackoverflow.com/questions/7040986/rmi-exportobjectremote-obj-port-createregistryport – jtahlborn