【问题标题】:Java RMI: Pass remote object reference back to hostJava RMI:将远程对象引用传回主机
【发布时间】:2014-10-09 14:35:11
【问题描述】:

我的客户端使用 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]]]]]

【问题讨论】:

  • 为什么不在中间结果中返回一个序列化的值对象而不是一个代理?

标签: java rmi proxy-classes remoteobject


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2016-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多