【发布时间】:2012-03-18 04:32:25
【问题描述】:
在RMI中,我只能通过
获得返回值InetSocketAddress address = new InetSocketAddress(hostname, port);
Server server = Stub.create(Server.class, address);
int return = server.getValue();
但是,我无法得到它
public class Return {
int value;
}
InetSocketAddress address = new InetSocketAddress(hostname, port);
Server server = Stub.create(Server.class, address);
Return return = new Return();
server.getValue(return);
我知道参数将被序列化和反序列化,但这不是我的问题,我的问题是“为什么 Java 不能像在 C 中使用 RPC 那样模拟传递引用作为传递传递? ",我认为它与java环境有关。 我所说的 in-out 我的意思是在带有 RPC 的 C 中,您可以通过
int return;
rpc.getValue(&return);
希望现在我的问题很清楚了。
【问题讨论】:
-
你在什么类上调用这些
getValue方法? RMI 不应该要求您作为单独的步骤专门获取返回值,您只需调用返回结果的接口上的方法,就像在本地调用方法一样。恐怕我不太了解你的问题。 -
@Andrzej Doyle 我已经修改了代码,请再次检查,很抱歉造成混乱。
-
"我知道参数会被序列化和反序列化" ... 和返回值;在这两种情况下,除非相关对象是导出的远程对象。这是记录在案的。
标签: java rmi pass-by-reference rpc