今天尝试用spring HttpInvoker, 得到的返回值是remote对象而不是stub。于是看了看原来的stub是怎么得出来的,发现一个stub调用远程服务,如果那个服务返回一个remote对象的话,在客户端这里拿到的就是stub. 具体原理不太清楚。

网上看到的一段话:

如果一个类继承自UnicastRemoteObject,那么它必须提供一个构造函数并且声明抛出一个RemoteException对象。

当这个构造函数调用了super(),它就激活UnicastRemoteObject中的代码完成RMI的连接和远程对象的初始化。