spring包裝了rmi后,使我們得到幾點便利:
不用調用rmic編譯stub和skeleton
不用直接實現remote接口
不需要啟動命名服務rmiregistry
但,卻不支持原來rmi的回調功能。查閱許多網頁也不得其解。
今天,想到一招,共享出來,如果大家有好辦法歡迎回貼共享。
正常做法是:
回調一般是用在一群client端需要server來通知的情況,一般server就用Vector來保存client對象。
server端需要提供一個方法,client把對象傳過來后,保存到Vector中,以后就可以通知client們了:
register (ClientObject obj);
在spring里,基本做法是一樣的,唯一不同是,在這個方法里,client不能傳對象,我們就傳一個client提供出來的rmi對象的url:
register(String url);
在client端,就如正常使用先獲得server對象,再調用這個方法,注意組成url的代碼:
在server端registerFlower處理里,根據url動態創建這個對象,代碼如下: