Java Rmi
1.接口必须继承java.rmi.Remote接口
2.方法必须抛出java.rmi.RemoteException异常
Spring Rmi
1.可以不实现java.rmi.Remote接口
2.方法可以不抛出异常
问题:在Spring 内部是怎么实现的?
在Spring中 是通过org.springframework.remoting.rmi.RmiServiceExporte 在服务端导出一个服务
RmiServiceExporter定义
public class RmiServiceExporter extends RmiBasedExporter implements InitializingBean, DisposableBean {
}
实现了 InitializingBean接口 Spring会在bean的实例化阶段 调用 InitializingBean 的afterPropertiesSet 方法
bean的实例化 会在什么时候触发 取决于配置 例如lazy-init
RmiServiceExporter afterPropertiesSet 方法实现
public void afterPropertiesSet() throws RemoteException {
prepare();
}
prepare方法
public void prepare() throws RemoteException {
//检查配置中的 service对象 如果为null 抛出异常
checkService();
//检查服务名称
if (this.serviceName == nu