Spring RMI 源码浅析-RmiServiceExporter 导出服务

本文介绍了Spring RMI服务导出的原理,不同于Java RMI,Spring允许服务不实现`java.rmi.Remote`接口且方法不抛`RemoteException`。在Spring中,`RmiServiceExporter`在bean初始化后导出服务,通过`InitializingBean`接口驱动,并使用`RmiInvocationWrapper`包装未实现`Remote`接口的服务,以确保兼容JDK RMI的客户端调用。
摘要由CSDN通过智能技术生成

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
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值