1

我在尝试访问两种不同方法之间的共享静态变量时遇到了这个问题......

假设环境应该是这样的:

方法 1 使用 RMI 接口 CommonUtils:

CommonUtils service = registry.lookup("chat"); //i'm sure that it works fine
service.register(String username);...

CommonUtils的实现:

public static ArrayList<ChatInterface> connectedChat=new ArrayList<ChatInterface>();
public static void register(String username){
     connectedChat.add(username);
}
public static String getChatByUsername(String username){
    for(ConnetctedChat temp:connectedChat)
       if (temp.getUsername().equals(username))
           return temp;
} ...

方法 2 直接从同一个库中调用 utils:

String username;
ChatInterface tmp=CommonUtils.getChatByUsername(username); <---- This is "the problem"

现在,当我尝试检查“ArrayList connectedChat”中的内容时,我看到了两个不同的结果:正确的是当我从第一个方法中获取信息时。否则,当我尝试从“方法 2”中取出一些东西时,它说 ArrayList 是空的,所以我不能再操作了(但从另一种方法来看,列表似乎不是空的!)。

我要解决的问题是一种聊天服务......它适用于客户端发送者 - 服务器 - 客户端接收者,但它似乎不适用于简单的服务器发送者 - 客户端接收者通信。

4

1 回答 1

1

您似乎期望 RMI 在 JVM 之间共享静态变量。他们不是。这就是存在远程方法的原因。

于 2012-09-26T02:03:34.740 回答