java - 为什么我不能在 JBoss 上的 Solr 中实例化 DataImportHandler?

标签 java jboss solr dih

我正在尝试在 JBoss 5.1 上设置 Solr 3.5.0。一切正常。我将 war 复制到部署目录中,将 dist 和 contrib 目录中的所有依赖项复制到 lib(或更早的部署)目录中。

我可以启动服务器,一切正常,但每当我想激活 DataImportHandler 来为我的数据库中的数据编制索引时,我都会收到错误消息。

基本上我所做的是复制我从 example/example-DIH/solr/db 复制一个核心(或整个示例,这无关紧要),我在 solr.xml 中注册核心并在启动时我得到一个错误:

15:17:10,707 SEVERE [RequestHandlers] org.apache.solr.common.SolrException: Error Instantiating Request Handler, org.apache.solr.handler.dataimport.DataImportHandler is not a org.apache.solr.request.SolrRequestHandler
at org.apache.solr.core.SolrCore.createInstance(SolrCore.java:427)
at org.apache.solr.core.SolrCore.createRequestHandler(SolrCore.java:461)
at org.apache.solr.core.RequestHandlers.initHandlersFromConfig(RequestHandlers.java:157)

我很确定我的请求处理程序定义是正确的,但只是为了确定:

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
  <str name="config">dataimport.xml</str>
</lst>

据我所知,这个错误可能是由于 DataImportHandler 和 SolrRequestHandler 应该持有不同的类加载器引起的。

每当我从示例中的 start.jar 应用程序启动 Solr(我认为它启动了 Jetty 服务器)时,它工作正常。

我的问题是:这真的是因为类加载器问题,还是其他原因?而且,更重要的是:我该如何修复它?

最佳答案

这是一个类加载器问题,根据这个 post on the Lucene Developer Mailing List您需要执行以下操作:

make sure that the dataimport jars are NOT in the classpath and not loaded by other classloaders but from the path specified in solrconfig.xml. This will ensure that the dataimport classes are loaded by the same classloader.

请查看主题以了解更多详细信息。

关于java - 为什么我不能在 JBoss 上的 Solr 中实例化 DataImportHandler?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8728499/

相关文章:

java - 如何在java中获取两个值之间的年份列表?

search - 关于数据结构/查询功能的elasticsearch vs solr

Solr 优化命令状态

elasticsearch - OrientDB可以完全满足Solr或ElasticSearch的要求

java - 出于商业目的在哪里发布可用的 maven 存储库中的 Artifact ?

java - 使用 JSF 进行 Stripe Checkout 收费 : Form being submitted twice

java - 如何在java中创建一个每次迭代返回不同变量的循环?

java - Spring批处理自动生成带有自定义前缀的表

java - 如何从 Java EE 服务器(JBoss)上同一耳朵的不同 war 中访问文件?

java - JBoss hibernate : Could not load requested class com. mysql.jdbc.Driver