1. 程式人生 > >分散式服務架構之Hessian原理分析(一)

分散式服務架構之Hessian原理分析(一)

使用HessianServiceExporter向外暴露服務,接收請求:


HessianServiceExporter接收到請求後通過呼叫handleRequest的invoke進一步執行請求:


在invoke中,拿到請求的Servlet  InputStream檢索請求體作為二進位制資料,返回資料也是一個適合在響應中寫入二進位制資料的Servlet Output Stream。servlet容器不對二進位制資料進行編碼。

invoke()繼續執行呼叫:



將InputStream進一步轉換為底層的Hessian2Input,然後再進行序列化

in.setSerializerFactory(this.serializerFactory);

out.setSerializerFactory(this.serializerFactory);

之後繼續執行:

skeleton.invoke(in, out);到HessianSkeleton類中:

String methodName = in.readMethod();拿到請求流中的請求介面方法名稱,因此在寫客戶端介面時,方法名應當與服務端介面方法名一致。

進一步執行:

result = method.invoke(service, values)最終處理請求,並out.writeReply(result),這樣請求執行完成。

Hessian客戶端執行流程:

一、通過建立Hessian代理工廠HessianProxyFacotry

create建立HessianProxyFacotry


通過Hessian代理工廠判斷並執行呼叫遠端介面。