2012-03-03 172 views
-1

我正在嘗試使用RMI進行一些測試。RMI代碼庫,連接到本地代碼庫

我有一個.jar文件,其中包含我需要調用的方法的類。在我的NetBeans項目中,我有一個TestClient類,它必須連接到我的遠程接口ShareBroker。 我的問題是如何爲java.rmi.server.codebase設置正確的地址,以及爲了查找ShareBrooker,我需要在我的TestClient中使用哪個地址。

我嘗試了一些不同的地址和組合,但無法得到這個工作。 對於此測試,我需要將代碼庫設置在本地目錄中。

回答

0

java.rmi.server.codebase屬性在導出遠程對象的JVM上設置。通常這是服務器JVM。

代碼庫URL必須引用可由此服務器的客戶端訪問的目錄或JAR文件。因此,它必須是引用客戶端可訪問的Web服務器的HTTP或FTP URL或引用客戶端本地文件系統的文件:URL。 (1)服務器將不得不知道客戶端文件系統順序的佈局,以正確設置代碼庫屬性,這提出了配置難度,並且(2)所有這些將完成的事情是隻要將該本地目錄/ JAR文件包含在客戶端的CLASSPATH中,並將代碼庫系統完全取消就可以完成。

換句話說,代碼庫中絕對沒有指向本地文件系統的要點。

+0

那好吧,我不需要設置代碼庫...不過還是我爲什麼不能訪問的JAR文件? //192.168.0.6:40090/ShareBroker是我正在查看的地址,服務器在那裏監聽端口,我得到:異常$ Proxy0不能轉換爲ShareBroker – Giannis 2012-03-03 03:17:57

+0

@latusaki什麼是'ShareBroker'?你真正的問題是什麼? – EJP 2012-03-03 08:50:55

0

請檢查您的遠程接口不能擴展java.rmi.Remote接口

+0

這個問題已經在近一年前解決了。感謝打擾壽 – Giannis 2013-03-03 18:02:34

0

對於客戶端來訪問你應該有提供給可以在客戶端類路徑設置的client.This存根遠程服務(您可以在項目構建路徑中包含生成的存根)。

如果客戶端在其類路徑中沒有存根,則必須在遠程服務中設置java.rmi.server.codebase屬性。如果設置了該屬性,則當客戶端調用遠程方法時,它將下載指定的代碼庫中的存根類。

以下鏈接可能是有用的.. https://community.oracle.com/thread/1180559?start=0 http://docs.oracle.com/javase/7/docs/technotes/guides/rmi/codebase.html