我的目標是創建一個同時啓動服務器和客戶端的分佈式計算程序。我需要它能夠安裝在幾臺機器上,讓所有機器都可以通過一個應用程序相互通信,即主節點和5個從節點。RMI在表中沒有這樣的對象,服務器通信錯誤
我的問題是,我不能正確使用unicastRef,我在考慮在同一個端口上啓動一切時出現問題,有沒有更好的方法可以忽略?
這是我的代碼的一部分(即重要的部分)
嘗試{
RMIServer obj = new RMIServer();
obj.start(5225);
} catch (Exception e) {
e.printStackTrace();
}
try {
System.out.println("We are slave's ");
Registry rr = LocateRegistry.getRegistry("127.0.0.1", Store.PORT, new RClient());
Call ss = (Call) rr.lookup("FILLER");
System.out.println(ss.getHello());
} catch (Exception e) {
e.printStackTrace();
}
}
這是我的主類(以上)
這是服務器級(下同)
public RMIServer(){ }
public void start(int port) throws Exception {
try {
Registry registry = LocateRegistry.createRegistry(port, new RClient(), new RServer());
Call stuff = new Call();
registry.bind("FILLER", stuff);
System.out.println("Server ready");
} catch (Exception e) {
System.err.println("Server exception: " + e.toString());
e.printStackTrace();
}
}
我不知道我失蹤或我忽略了什麼,但輸出看起來像這樣。
偵聽5225 偵聽8776 服務器準備 我們是奴隸的 偵聽8776 java.rmi.NoSuchObjectException:沒有這樣的對象表 在sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java: 255) at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233) at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:359) at sun.rmi.registry.RegistryImpl_Stub.lookup(未知來源) at Main.main(Main.java:62)
line 62 is this ::: Call ss =(Call)rr.lookup(「FILLER」);
查看http://stackoverflow.com/questions/645208 – 2010-05-19 14:19:23