HttpSolrCall原始碼分析

2021-07-11 14:19:33 字數 1350 閱讀 9099

httpsolrcall是solr底層傳送http請求的中轉站,首先看一下它的建構函式

沒有什麼特別之處,主要是進行了一些賦值操作

接下來這個類裡面有個 private void init() throws exception {}方法

主要是解析req從中獲取core名稱,並向req中寫入一些屬性,初始化一些core相關的引數,檢查core在不在corecontainer中,並做一些錯誤異常丟擲的處理,以及得到當前url的action型別。在這個方法裡還呼叫了乙個方法

extracthandlerfromurlpath(solrrequestparsers parser) throws exception {}

此方法從url中解析出當前請求需要用到的solrrequesthandler,這個solrrequesthandler在solr中很重要,每一種不同的request請求都對應著乙個solrrequesthandler,在後面的文章中我們將詳細介紹

solrreq = parser.parse(core, path, req);

invalidstates = checkstateisvalid(solrreq.getparams().get(cloudsolrclient.state_version));

string qt = solrreq.getparams().get(commonparams.qt);

handler = core.getrequesthandler(qt);

下面這個方法是這個類的核心

public action call() throws ioexception

queryresponsewriter responsewriter = core.getqueryresponsewriter(solrreq);

if (invalidstates != null) solrreq.getcontext().put(cloudsolrclient.state_version, invalidstates);

writeresponse(solrrsp, responsewriter, reqmethod);

}return return;

default: return action;

}在這些**裡處理了admin,remotequery,process三種型別的請求,其他型別的action不做操作

admin的請求在本機

《原始碼閱讀》原始碼閱讀技巧,原始碼閱讀工具

檢視某個類的完整繼承關係 選中類的名稱,然後按f4 quick type hierarchy quick type hierarchy可以顯示出類的繼承結構,包括它的父類和子類 supertype hierarchy supertype hierarchy可以顯示出類的繼承和實現結構,包括它的父類和...

Cartographer原始碼篇 原始碼分析 1

在安裝編譯cartographer 1.0.0的時候,我們可以看到 主要包括cartorgarpher ros cartographer ceres sover三個部分。其中,ceres solver用於非線性優化,求解最小二乘問題 cartographer ros為ros平台的封裝,獲取感測器資料...

python原始碼剖析 Python原始碼剖析

第頁共 頁python 原始碼剖析 物件機制 1.物件 在python 的世界中,一切都是物件,乙個整數是乙個物件,乙個字串也是 乙個物件,更為奇妙的是,型別也是乙個物件,整數型別是乙個物件,字串類 型也是乙個物件。從 年guido 在那個聖誕節揭開 python 世界的大幕開始,一直到現在,pyt...