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动态创建这个对象,代码如下: