我在尝试访问两种不同方法之间的共享静态变量时遇到此问题......
假设环境应该是这样的:
使用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>
我正在尝试解决的问题是一种聊天服务......它可以从客户端发件人 - 服务器 - 客户端接收器工作,但似乎它不能在简单的服务器发送器 - 客户端接收器通信中工作
答案 0 :(得分:0)
您似乎期望RMI在JVM之间共享静态变量。他们不是。这就是存在远程方法的原因。