gpt4 book ai didi

java - RMI 服务器,变量值未更新

转载 作者:行者123 更新时间:2023-11-30 03:04:40 25 4
gpt4 key购买 nike

这只是一个测试,旨在了解 java RMI 服务器如何工作。如果我执行服务器并与 RMI 客户端通信,则当客户端远程调用 getData() 方法时,应该更新变量“data”。但程序却继续打印“hello 2”。这意味着变量没有更新,可能是因为服务器在另一个进程上执行。有人可以澄清这一点吗?

import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
import java.util.logging.Level;
import java.util.logging.Logger;

public class RMIServer extends UnicastRemoteObject implements RMIi{

public RMIServer() throws RemoteException{
super();
}

static String data = "Hello";

@Override
public String getData(String text) throws RemoteException {
data = "Hello 4";
return data;
}

public static void main (String[] args){
while(true) {
try{
data = "Hello 2";
Registry reg = LocateRegistry.createRegistry(1099);
reg.rebind("server", new RMIServer());
System.out.println("Server Started");
data = "Hello 3";
}
catch(Exception e){
System.out.println(e);
}

System.out.println(data);
}
}

}

最佳答案

If I execute the server and communicate with an RMI client, the variable "data" should be updated when the getData() method is remotely called by the client.

正确。

But instead the program keeps printing "hello 2".

什么程序?这里没有任何东西可以打印出来。但是 data 是“Hello 2”,因为 main() 中存在毫无意义的循环。删除它。

This means that the variable is not updated

不,没有。这意味着您在一个毫无意义的循环中不断将其设置为该值,同时还不断创建新的服务器实例。这里没有证据表明您已经执行了客户端。

maybe because the server is executed on another process.

没有。

注意数据不应该是静态的。

关于java - RMI 服务器,变量值未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35089595/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com