2010-02-03 32 views
0

我想创建一个rmi服务器,它也可以充当客户端,尽管这方面工作正常 - 问题出在于,对于任何特定的服务器/客户端关系,更改服务器(此时远程触发的方法)的实例上的局部变量(暂时)不会持久。远程调用java方法 - 如何访问本地变量

所以下一次我尝试访问这个变量或者返回它时,原来的,不变的变量就会出现。在C++中(如果你有rmi :)我可以传递一个指针 - 但是我怎么能强制java改变底层的值?

回答

0

你如何传输远程对象?有两种机制,远程存根和序列化。既然你正在谈论访问字段,我假设你使用序列化(远程存根只是接口,只有方法,没有字段)。

序列化的对象作为副本传输。它们只是价值对象,不会受到后来服务器上“他们的”版本发生的任何影响。如果您需要一个继续在服务器上“活动”的对象,则必须使用Remote对象。在这种情况下,客户端上只创建一个存根,所有的方法调用都转到服务器。

+0

嗯,我遵循这里的总体布局:http://java.sun.com/j2se/1.5.0/docs/guide/rmi/hello/hello-world.html 只有改装,所以服务器可以客户端和服务器 - 如果我正确理解这一点,因为iam注册与regstry对象,并调用stub.foo()这应该在服务器上运行? – malangi 2010-02-03 01:24:10

+0

在服务器/客户端mod之前是否工作? – Thilo 2010-02-03 01:32:25