整体流程里面其实已经分析过一遍了,这一篇对此加强一下个人理解,首先将流程图整理如下:
1. 这里注意下步骤2中的调用顺序
因为作为ProxyFactory借口的实现类JavassistProxyFactory,它被包装过,一般这种包装类是用来实现IOC和AOP的过程的,因此在真正调用实现类之前,会有代码增强功能。因此此处的调用链是:
ProxyFactory$Adaptive -> StubProxyFactoryWrapper -> JavassistProxyFactory
2.另一个注意的是步骤6的调用
Protocol的实现类InjvmProtocol也被增强了,它的调用链是如下:
ProxyFactory$Adaptive -> ProtocolListenerWrapper -> ProtocolFilterWrapper -> InjvmProtocol
3.图中可以看见Invoker到Exporter的转化,后续由Exporter负责Invoker的生命周期,下面贴一下Invoker知识。
Invoker:可执行的对象,执行具体的远程调用,能够根据方法名称,参数得到相应的执行结果。
那么对于本地Invoker来说的话,如果是本地调用的时候,只需要通过反射进行调用,就能获取到结果。