我成功創建了RMI服務和客戶端。我可以調用方法等。但是現在我想嘗試以下方法:我想要一個像LinkedList這樣的標準Java對象託管在服務上。 另外,我想'假裝'我已經有了使用LinkedList的現有代碼。我想要的是獲得一個實際由服務管理的LinkedList,但我可以像訪問一個普通的LinkedList一樣訪問本地。最重要的是,我想做一些最小化的日誌記錄,就像調用.add()一樣,它會在服務器上寫入:「添加調用」。Java RMI:如何傳遞POJO
這不是爲了生產,只是爲了幫助我理解它是如何工作的!
到目前爲止,我已經嘗試了很多東西。最有前途的是我創建了一個擴展LinkedList並實現Remote的類。該類試圖將自身與構造註冊表這樣註冊:
try {
UnicastRemoteObject.exportObject((Remote)this); Naming.rebind("theList", (Remote)this); } catch (Exception e) { System.out.println("fail"); System.out.println(e.getMessage()); }
我必須這樣做,因爲我需要延長的LinkedList,所以我不能繼承UnicastRemoteObject。
輸出我得到的,當我嘗試運行此,在服務器端:
fail Connection refused to host: 192.168.178.27; nested exception is: java.net.ConnectException: Connection refused
而且在客戶端:
java.lang.ClassCastException: MyList_Stub cannot be cast to java.util.LinkedList at $Proxy0.createList(Unknown Source) at RemoteProgram.main(RemoteProgram.java:27)
提前感謝!
嘿邁克爾,謝謝你的迴應。但我只是試圖理解這些概念。我指定它的方式 - 你將如何去做,以便每次改變它都被傳送到服務器,儘管效率很低? – partel 2010-07-11 12:07:19