摘要:最近公司內(nèi)部系統(tǒng)相互通信調(diào)用用到了的機制后來有空研究了一下的機制在這里做一個簡單的摘要有不對的地方希望指正首先看客戶端的基礎(chǔ)類他是一個工廠意味著他具有包裝的功能當(dāng)你調(diào)用的的的方法返回的并不是他本身而是被他包裝過得下圖的箭頭及包裝的地方實際上
最近公司內(nèi)部系統(tǒng)相互通信調(diào)用用到了spring的hessian機制,后來有空研究了一下spring hessian的機制,在這里做一個簡單的摘要,有不對的地方希望指正;
首先看客戶端的基礎(chǔ)類HessianProxyFactoryBean,他是一個工廠bean,意味著他具有包裝bean的功能,當(dāng)你調(diào)用spring的ApplicationContext的getBean的方法返回的并不是他本身,而是被他包裝過得bean,下圖的箭頭及包裝bean的地方:
實際上是利用的spring的aop機制做了一個service interface的一個代理
2.既然是代理,就少不了Interceptor的攔截,HessianProxyFactoryBean本身繼承了HessianClientInterceptor,并且攔截了方法的調(diào)用:
方法直接被hessianProxy對象調(diào)用,我們接下來看hessianProxy對象的創(chuàng)建:
進入到hessian的框架包,可以看到使用了jdk的動態(tài)代理,并且自己實現(xiàn)了InvocationHandler:HessianProxy
也就是說對象方法的執(zhí)行會直接,使用HessianProxy代理器
2.查看HessianProxy代理器源碼:
這里可以看到具體的執(zhí)行過程:先對equals,hashCode,getHessianType,getHessianURL,toString做了特殊處理,然后創(chuàng)建了HessianConnection,AbstractHessianOutput,調(diào)用AbstractHessianOutput.call方法寫入?yún)?shù),核心的方法就是利用Serializer,hessian利用了序列化的機制,封裝了多種序列化的工具類,具體可以參考源碼包;
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/68980.html
摘要:相比,更簡單快捷。采用的是二進制協(xié)議,因為采用的是二進制協(xié)議,所以它很適合于發(fā)送二進制數(shù)據(jù)。創(chuàng)建接口創(chuàng)建實現(xiàn)類類端在這個包下服務(wù)端包類將服務(wù)端的代碼打包安裝到本地倉庫,打開瀏覽器輸入即可。 前言 看了其他的文章發(fā)現(xiàn),大多數(shù)都是只寫了關(guān)鍵的部分,對于一個初學(xué)者來說只能明白用了什么東西,但實際動手發(fā)現(xiàn),項目還存在一些問題,通過本篇文章,可以避免一些問題,節(jié)省一些時間成本。 Hessian簡...
摘要:但是只不過都是以二進制的形式編碼的。這其實相當(dāng)于綜合了和二進制共同優(yōu)勢的一個協(xié)議。在上面的架構(gòu)中,如果使用二進制的方式進行序列化,雖然不用協(xié)議文件來生成,但是對于接口的定義,以及傳的對象,還是需要共享。 ????前面我們認(rèn)識了兩個常用文本類的 RPC 協(xié)議,對于陌生人之間的溝通,用 NBA、CBA 這樣的縮略語,會使得協(xié)議約定非常不方便。 ????在講 CDN 和 DNS 的時候,我們...
摘要:但是只不過都是以二進制的形式編碼的。這其實相當(dāng)于綜合了和二進制共同優(yōu)勢的一個協(xié)議。在上面的架構(gòu)中,如果使用二進制的方式進行序列化,雖然不用協(xié)議文件來生成,但是對于接口的定義,以及傳的對象,還是需要共享。 ????前面我們認(rèn)識了兩個常用文本類的 RPC 協(xié)議,對于陌生人之間的溝通,用 NBA、CBA 這樣的縮略語,會使得協(xié)議約定非常不方便。 ????在講 CDN 和 DNS 的時候,我們...
摘要:對于與而言,則可以看做是消息傳遞技術(shù)的一種衍生或封裝。在生產(chǎn)者通知消費者時,傳遞的往往是消息或事件,而非生產(chǎn)者自身。通過消息路由,我們可以配置路由規(guī)則指定消息傳遞的路徑,以及指定具體的消費者消費對應(yīng)的生產(chǎn)者。采用和來進行遠程對象的通訊。 消息模式 歸根結(jié)底,企業(yè)應(yīng)用系統(tǒng)就是對數(shù)據(jù)的處理,而對于一個擁有多個子系統(tǒng)的企業(yè)應(yīng)用系統(tǒng)而言,它的基礎(chǔ)支撐無疑就是對消息的處理。與對象不同,消息本質(zhì)上...
摘要:微軟的雖然引入了事件機制,可以在隊列收到消息時觸發(fā)事件,通知訂閱者。由微軟作為主要貢獻者的,則對以及做了進一層包裝,并能夠很好地實現(xiàn)這一模式。 在分布式服務(wù)框架中,一個最基礎(chǔ)的問題就是遠程服務(wù)是怎么通訊的,在Java領(lǐng)域中有很多可實現(xiàn)遠程通訊的技術(shù),例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等,這些名詞之間到底是些什么關(guān)系呢,它們背后到底是基...
閱讀 2881·2021-11-16 11:55
閱讀 2630·2021-09-29 09:34
閱讀 3450·2021-09-01 14:21
閱讀 3785·2019-08-29 12:36
閱讀 709·2019-08-26 10:55
閱讀 4004·2019-08-26 10:20
閱讀 1040·2019-08-23 18:19
閱讀 1209·2019-08-23 17:56