네트워크의 다른 호스트 (ssh-tunnel을 통해 dev-pc, 직접 연결을 통해 jenkins-server)에서 동일한 RMI 서버에 액세스하려고합니다. 문제는 RMI 호스트가 다른 클라이언트 호스트의 다른 이름으로 알려져 있다는 것입니다.RMI 스터브 : 클라이언트 측에서 호스트 값 강제
Registry registry = LocateRegistry.getRegistry("hostname", 10099, new CustomSslRMIClientSocketFactory());
그러나 우리는 다음과 같은 원격 객체를 조회 할 때, 그것은 잘못된 호스트 이름을 포함 : 우리가 레지스트리에 연결할 때 우리는이 같은 대상 호스트 이름을 설정할 수 있기 때문에
이것은 문제가되지 않습니다. 스텁에 내가 호스트가 레지스트리 객체에 같은 필요하다는 것을 관찰 할 수 디버거에서
HelloRemote hello = (HelloRemote) registry.lookup(HelloRemote.class.getSimpleName());
,하지만 우리는의 메소드를 부르는

우리는 즉시 연결 시간 초과를 얻을 수 그루터기. 디버거에서 수동으로 호스트 값을 localhost
으로 변경하면 메서드 호출이 성공합니다.
나는 서버 측에 java.rmi.server.hostname
을 설정할 수 있지만 젠킨스와의 연결은 더 이상 작동하지 않는다는 것을 알고 있습니다. 가장 간단한 해결책은 RMI가 해당 레지스트리에서 검색 한 모든 스텁에 대해 레지스트리와 동일한 호스트를 사용하도록 강제하는 것입니다. 리플렉션을 통해 스텁의 호스트 값을 바꾸는 것보다 나은 방법이 있습니까?