我最近遇到了將Apache SOLR 4.1 war文件部署到我們的tomcat 6服務器的問題。在服務器庫($ CATALINA_HOME/lib)中,我們有一箇舊的lucene實現庫(2.9+)用於一些傳統的搜索應用程序。 SOLR在其.war文件的WEB-INF/lib中有較新的4.1 lucene實現jar文件。通過檢查Tomcat 6文檔,看起來SOLR庫應該加載FIRST;然而,根據經驗,情況並非如此:如果我將其部署到正在運行的服務器上,則管理控制檯將顯示其加載2.9.0 lucene實現。使用lucene實現的Apache SOLR 4.1類加載器問題
要添加另一個扭曲:如果我停止並重新啓動Tomcat服務器,則會切換到4.1!正如你大概可以想象的那樣,這讓我的奴隸複製悲傷;因爲我相信我的初始索引是通過2.9 lucene構建的,在某個時候重新啓動了容器,使用隨後加載的4.1進行更新,並試圖複製到2.9 lucene實現從屬,導致它們全部失敗。
這裏的任何建議都會受到歡迎。我嘗試從SOLR war文件中刪除4.1庫,但是它無法加載,因爲有些依賴似乎需要它們(儘管類加載器在部署之後選擇「通用庫」lucene實現!)更新所有遺留代碼是不可行的將這些服務器上的軟件轉換爲lucene 4,儘可能多地重寫。任何想法爲什麼類加載器會以這種方式執行?
編輯:更復雜的事情,如果我有一個剛開始的Tomcat顯示4.1.0 lucene實現,然後RELOAD核心或通過Tomcat管理器做一個webapp重新加載,它會返回到2.9.0 !這顯然是不可接受的。