2014-10-09 69 views
2

我的客戶端使用RMI連接到不同主機上的服務。Java 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); 

我希望RMI解決的參考/代理,以便服務看到它最初發送的對象,但這並不似乎是案件。取而代之的是,上面的代碼僅僅發送代理服務:

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

+0

爲什麼不在中間結果中返回一個序列化的值對象而不是代理? – 2014-10-09 21:32:34

回答

1

號遠程對象被序列化作爲其存根,但反向不會發生。您需要爲此維護您自己的地圖。