[英]RMI no such object in table, Server communication error
我的目標是創建一個可同時啟動服務器和客戶端的分布式計算程序。 我需要它能夠安裝在幾台機器上,並使所有機器彼此通信,即,一個應用程序中的主節點和5個從節點。
我的問題是我無法正確使用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();
}
}
這是我的主班(上)
這是服務器類(下)
公共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)表中的此類對象在sun.rmi.transport.StreamRemoteCall上沒有.executeCall(StreamRemoteCall.java:233)在sun.rmi.server.UnicastRef.invoke(UnicastRef.java:359)在sun.rmi.registry.RegistryImpl_Stub.lookup(未知源)在Main.main(Main.java:62) )
第62行是::: Call ss =(Call)rr.lookup(“ FILLER”);
可能是因為您對服務器類中的存根的引用是try塊的本地引用,並且此引用在此之后立即被垃圾回收。 嘗試將stuff
變成類變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.