两个调用访问具有不同结果的静态变量

时间:2012-09-25 19:34:55

标签: java rmi remote-access

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

假设环境应该是这样的:

使用RMI接口CommonUtils的方法1:

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是空的,所以我不能再操作了(但是从另一种方法来看,似乎列表不是空的!)。 / p>

我正在尝试解决的问题是一种聊天服务......它可以从客户端发件人 - 服务器 - 客户端接收器工作,但似乎它不能在简单的服务器发送器 - 客户端接收器通信中工作

1 个答案:

答案 0 :(得分:0)

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