Java 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);

我希望RMI解析引用/代理,以便Service看到它最初发送的对象,但事实并非如此。相反,上面的代码只是将代理发送到服务:

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

否。远程对象被序列化为其存根,但不会发生相反的情况。为此,您需要维护自己的地图。

相关内容

最新更新