2014-10-09 4 views
2

내 클라이언트는 RMI를 사용하여 다른 호스트의 서비스에 연결합니다.자바 RMI : 원격 객체 참조를 호스트에 다시 전달

이 클라이언트는 원격 객체 참조를 반환하는 서비스의 메소드를 호출합니다. 클라이언트가 관련 스텁을 서비스의 다른 방식으로 전달할 수 있습니까?

즉, 클라이언트가 스텁을 사용하여 서비스 메서드를 호출 할 수 있으므로 서비스에서 스텁이 아닌 원래 개체를 볼 수 있습니까?

높은 수준의 예 : 나는 서비스가 원래 보낸 객체를 볼 수 있도록 RMI는 기준/프록시를 해결하기 위해 기대,하지만이 될 나타나지 않습니다

// Connecting to the service. 
Service service = (Service) Naming.lookup(servicename); 

// Retrieving intermediate result. (Passed as remote object reference.) 
IntermediateResult res = service.getIntermediateResult(); 

// Passing stub result back to service... 
service.confirmResult(res); 

(클라이언트 코드) 케이스.

Proxy[IntermediateResult,RemoteObjectInvocationHandler[UnicastRef [liveRef: [endpoint:[10.43.89.166:58799](remote),objID:[-762db624:148f519cb69:-7fec, -4488749599514745712]]]]]

+0

중간 결과에 프록시 대신 직렬화 된 값 개체를 반환하지 않는 이유는 무엇입니까? –

답변

1

호 원격 객체의 스텁로서 직렬화됩니다 만, 그 반대 발생하지 않는 대신, 위의 코드는 서비스에 프록시를 보냅니다. 이 목적으로 자신의지도를 유지해야합니다.