1. 程式人生 > >web專案部署solr問題解決(Server is shutting down or failed to initialize和solr.clustering.ClusteringComponent)

web專案部署solr問題解決(Server is shutting down or failed to initialize和solr.clustering.ClusteringComponent)

今天在web專案中搭建solr的過程中,遇到了HTTP Status 503 - Server is shutting down or failed to initialize錯誤,上網查找了相關錯誤都沒有解決,最後才發現自己關於日誌的jar包沒有全部匯入,將官網下載的solr包中的關於日誌包全部複製到 lib檔案中就行了,如下圖所示:


順便貼一下我的web專案目錄結構:


PS:上面中的log4j.properties檔案如果不考到專案中,在專案啟動的時候就不會列印錯相應的日誌資訊,該檔案在example下的resources資料夾下。

把上面的問題解決後,後臺又出現個新的錯誤,Error loading class 'solr.clustering.ClusteringComponent'。訪問頁面列印的錯誤為:

HTTP Status 500 - {msg=SolrCore 'collection1' is not available due to init failure: 
Error loading class'solr.clustering.ClusteringComponent',trace=org.apache.solr.common.
SolrException: SolrCore 'collection1' is not available due to init failure: Error loading class 'solr.clustering.ClusteringComponent' 
at org.apache.solr.core.CoreContainer.getCore(CoreContainer.java:785) 
at....... 

解決方案:

首先要看web.xml中配置solr home的路徑是否正確,配置如下:

<!-- People who want to hardcode their "Solr Home" directly into the
       WAR File can set the JNDI property here...
   -->
   
    <env-entry>
       <env-entry-name>solr/home</env-entry-name>
       <env-entry-value>F:\scorm\solrSearch\solr</env-entry-value>
       <env-entry-type>java.lang.String</env-entry-type>
    </env-entry>

將env-entry-value屬性內容改為solr home的正確路徑,此專案的正確路徑是web專案工作空間的solr資料夾路徑。

通過修改過後,問題還是沒有解決,依舊報錯,網上相關資料說修改solrconfig.xml中jar包的路徑,於是進入了該配置檔案,找到了配置jar包路徑的地方,如圖:


剛開始看到這個路徑的時候一臉懵逼,後來想想是不是沒有找到專案中lib檔案下的jar包,於是呼將上面jar包路徑改成了訪問專案中lib資料夾的路徑,如下所示:

<lib dir="../../WebContent/WEB-INF/lib" regex=".*\.jar" />
檢視專案啟動日誌,這下確實有載入lib資料夾下jar包的日誌記錄,但是問題還是沒有解決,依舊報錯。

開始有點不賴煩了,始終盯著這個jar包的路徑,想著為什麼預設的配置會是這個路徑,突然想到solrconfig.xml配置檔案是我從官網solr壓縮包中拷貝的,預設配置jar包路徑會不會和官網下載檔案裡面的檔案路徑有關?

果不其然,在solr-4.5.0檔案中看到了contrib和dist資料夾,如下圖所示,裡面也確實有很多jar包。

預設配置路徑中的jar包拷到專案的lib資料夾中,重新啟動專案,啟動正常,錯誤解決。

PS:solrconfig.xml中jar包路徑配置其實不需要改變,只需要把相應的jar包copy到lib資料夾下即可,啟動專案時,會訪問solrconfig.xml中jar包配置路徑,地址訪問不到就會被忽略。

總結:兩個錯誤都是因為少匯入jar包導致的,官網下載的壓縮包中的jar包存放地點並不是在一個資料夾下,不是很集中,如果像我一樣第一次搭建solr環境,很容易少考入jar包,導致出現問題。出現問題後,檢視日誌,藉助網上資料,冷靜分析,肯定能夠解決。       

  ------  問題總有解決的方法。

最後貼上一張solr的管理介面,慶祝一下: