2010-03-22 4 views
1

J'ai eu Solr 1.2 opérationnel sur le port 8983 et en utilisant liferay 5.1.1 la question est de savoir comment configurer solr pour rechercher à liferay JournalArticle table J'ai déjà installé solr-web plugin pour liferay mais il jette cette exceptionLiferay 5.1.1 plugin solr ClassCastException

[SolrIndexSearcherImpl:79] Error while sending request to Solr 
java.lang.ClassCastException: com.liferay.portal.kernel.util.HttpUtil cannot be cast to com.liferay.portal.kernel.util.HttpUtil 
     at com.liferay.portal.kernel.util.HttpUtil._getUtil(HttpUtil.java:317) 
     at com.liferay.portal.kernel.util.HttpUtil.getHttp(HttpUtil.java:96) 
     at com.liferay.portal.kernel.util.HttpUtil.addParameter(HttpUtil.java:68) 
     at com.liferay.portal.search.solr.SolrIndexSearcherImpl.search(SolrIndexSearcherImpl.java:71) 
     at com.liferay.portal.search.solr.SolrSearchEngineUtil.search(SolrSearchEngineUtil.java:78) 
     at com.liferay.portal.search.solr.messaging.SolrReaderMessageListener.doCommandSearch(SolrReaderMessageListener.java:92) 
     at com.liferay.portal.search.solr.messaging.SolrReaderMessageListener.doReceive(SolrReaderMessageListener.java:75) 
     at com.liferay.portal.search.solr.messaging.SolrReaderMessageListener.receive(SolrReaderMessageListener.java:46) 
     at com.liferay.portal.kernel.messaging.InvokerMessageListener.receive(InvokerMessageListener.java:69) 
     at com.liferay.portal.kernel.messaging.ParallelDestination$1.run(ParallelDestination.java:59) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
     at java.lang.Thread.run(Thread.java:619) 
16:08:16,174 ERROR [SolrReaderMessageListener:49] Unable to process message [email protected] 
com.liferay.portal.kernel.search.SearchException: java.lang.ClassCastException: com.liferay.portal.kernel.util.HttpUtil cannot be cast to com.liferay.portal.kernel.util.HttpUtil 
     at com.liferay.portal.search.solr.SolrIndexSearcherImpl.search(SolrIndexSearcherImpl.java:81) 
     at com.liferay.portal.search.solr.SolrSearchEngineUtil.search(SolrSearchEngineUtil.java:78) 
     at com.liferay.portal.search.solr.messaging.SolrReaderMessageListener.doCommandSearch(SolrReaderMessageListener.java:92) 
     at com.liferay.portal.search.solr.messaging.SolrReaderMessageListener.doReceive(SolrReaderMessageListener.java:75) 
     at com.liferay.portal.search.solr.messaging.SolrReaderMessageListener.receive(SolrReaderMessageListener.java:46) 
     at com.liferay.portal.kernel.messaging.InvokerMessageListener.receive(InvokerMessageListener.java:69) 
     at com.liferay.portal.kernel.messaging.ParallelDestination$1.run(ParallelDestination.java:59) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 

et BTW voici mon solr-web solr-spring.xml

<beans> 
    <bean id="indexSearcher" class="com.liferay.portal.search.solr.SolrIndexSearcherImpl"> 
    <property name="serverURL" value="http://localhost:8983/solr/select" /> 
    </bean> 
    <bean id="indexWriter" class="com.liferay.portal.search.solr.SolrIndexWriterImpl"> 
    <property name="serverURL" value="http://localhost:8983/solr/update" /> 
    </bean> 
    <bean id="searchEngine" class="com.liferay.portal.search.solr.SolrSearchEngineImpl"> 
    <property name="name" value="Solr" /> 
    <property name="searcher" ref="indexSearcher" /> 
    <property name="writer" ref="indexWriter" /> 
    <property name="indexReadOnly" value="false" /> 
    </bean> 

<bean id="searchEngineUtil" class="com.liferay.portal.search.solr.SolrSearchEngineUtil" lazy-init="false"> 
    <constructor-arg ref="searchEngine" /> 
    <constructor-arg ref="searchReaderMessageListener" /> 
    <constructor-arg ref="searchWriterMessageListener" /> 
    </bean> 

et ce qui schema.xml serait looklike dans ce cas

Répondre

0

il HttpUtils classe était en fait modifié à la suite des exigences de sorte que la solution à celui-ci était de remplacer la classe du noyau d'origine avec celui que nous avons modifié

0

Vous devez avoir plusieurs fichiers portal-kernel.jar dans votre serveur d'applications. Ce fichier ne peut pas être dupliqué dans le contexte d'au moins l'oreille contenant l'application et les plug-ins du portail dans un serveur d'application, ou le chemin de classe global s'il est exécuté dans un conteneur de servlet tel que tomcat.

+0

non, le problème est pas dans le pot, je cherchai le répertoire tomcat pour et trouvé une seule copie de portal-kernel.jar mais le problème ne se produit que lorsque j'installe solr plugin la situation comme suit: J'ai eu serveur solr opérationnel au port 8983 et liferay serveur à 8080 et quand j'ai installé solr plugin I configuré la mise à jour et sélectionnez les URL pour solr et puis j'ai eu l'exception jeté ci-dessus –