請教: jboss下 透過rmi呼叫其他機器上的遠端服務

noxel發表於2004-03-11


我的應用部署在jboss之下,他需要透過rmi訪問另一臺機器上的rmi服務,

現在如果rmi伺服器重啟,先前的stub自然失效,我們需要透過Naming.lookup 再找一遍,但是這時得到的stub object cast到相應的stub interface時會出現 ClassCastException ,我發現是因為jboss中的應用lookup 服務時,rmi伺服器重啟前後,是採用不同的classloader (sun.rmi.server.LoaderHandler$Loader)例項,對於jvm是靠class bytecode和class對應的classloader來唯一區別一個類的,

所以對於rmiserver重啟之前能順利cast成功,而rmi server重啟之後,由於stub object的classloader換了,jvm認為是不同的類,所以cast 出錯。


但是我發現不再jboss下的應用,也就是單獨的java application 在rmiserver重啟動前後,lookup到的stub object的class loader 是同一個,所以沒有這個問題。

不知道jboss在後面做了什麼手腳,請各位幫忙解釋一下。

相關文章