我的客户端使用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]]]]]
答案 0 :(得分:1)
没有。远程对象被序列化为其存根,但反过来不会发生。为此,您需要维护自己的地图。