1.客戶端rmiproxyfactorybean繼承關係
# remotingsupport
# \----remoteaccessor
# \----urlbasedremoteaccessor
# \----remoteinvocationbasedaccessor
# \----rmiclientinterceptor
# \----rmiproxyfactorybean
rmiproxyfactorybean實現了initializingbean,factorybean,methodinterceptor呼叫過程如下:
# rmiproxyfactorybean.afterpropertiesset
# \----new proxyfactory(getserviceinte***ce(), this) 建立**工廠,沒有傳入target物件,事實也沒有target物件
# \----proxyfactory.getproxy 返回的**物件儲存到serviceproxy
rmiproxyfactorybean.getobject 返回serviceproxy
# rmiproxyfactorybean.invoke ***方法,呼叫遠端服務物件的方法時被此方法攔截並返回
# \----rmiclientinterceptor.invoke 該方法引數是methodinvocation物件,維護method物件及若干引數物件
# \----rmiclientinterceptor.getstub
# | \----rmiclientinterceptor.lookupstub 利用jdk原生rmi查詢服務
# \----rmiclientinterceptor.doinvoke
# \----rmiclientinterceptor.doinvoke 過載方法,如果服務端是spring匯出的rmi服務,此時stub實現了繼承了remote介面的rmiinvocationhandler介面
# | \----remoteinvocationbasedaccessor.createremoteinvocation 將本地methodinvocation物件封裝為remoteinvocation物件
# | \----rmiinvocationhandler.invoke 該方法為stub(實現了rmiinvocationhandler)的方法,將唯一的引數remoteinvocation物件,該物件封裝了方法名及若干引數物件
# \----rmiclientinterceptorutils.invokeremotemethod 如果服務端是普通的rmi服務,利用反射機制使用stub進行普通的rmi請求
2.服務端rmiserviceexporter繼承關係
# remotingsupport
# \----remoteexporter
# \----remoteinvocationbasedexporter
# \----rmibasedexporter
# \----rmiserviceexporter
rmiserviceexporter實現了initializingbean,呼叫過程如下:
# rmiserviceexporter.afterpropertiesset
# \----rmiserviceexporter.prepare
# \----rmiserviceexporter.checkservice
# | \----remoteexporter.getservice 如果實現了remote介面直接返回
# | \----remoteexporter.getproxyforservice 如果沒有實現remote介面
# | | \----new proxyfactory
# | | \----proxyfactory.addinte***ce 將配置檔案中宣告的serviceinte***ce作為**介面
# | | \----proxyfactory.getproxy 生成**物件
# \----unicastremoteobject.exportobject
# \----registry.bind
# \----remoteinvocationbasedexporter.invoke
# \----defaultremoteinvocationexecutor.invoke
# \----remoteinvocation.invoke
spring原始碼分析 spring原始碼分析
1.spring 執行原理 spring 啟動時讀取應用程式提供的 bean 配置資訊,並在 spring 容器中生成乙份相應的 bean 配置登錄檔,然後根據這張登錄檔例項化 bean,裝配好 bean 之間的依賴關係,為上 層應用提供準備就緒的執行環境。二 spring 原始碼分析 1.1spr...
思科VPP原始碼分析(dpo機制原始碼分析)
vpp的dpo機制跟路由緊密結合在一起。路由表查詢 ip4 lookup 的最後結果是乙個load balance t結構。該結構可以看做是乙個hash表,裡面包含了很多dpo,指向為下一步處理動作。每個dpo都是新增路由時的乙個path的結果。dpo標準型別有 dpo drop,dpo ip nu...
redux原始碼分析(三) 原始碼部分
下面是每個部分的一些解讀 createstore apicreatestore reducer,initialstate enhancer 曾經非常好奇這個函式的第二個引數到底是initialstate還是enhancer,因為見過兩種寫法都有的,以為是版本問題。看了原始碼才發現,都可以的。如果你不...