在Jetty中嵌入Solr时无法创建CoreContainer

时间:2014-02-03 11:27:23

标签: java solr lucene jetty

我按照这篇文章中的说明操作:http://javaskeleton.blogspot.de/2011/07/adding-solr-to-existing-web-application.html

当我尝试执行此代码时:

File home = new File(System.getProperty("solr.solr.home"));
CoreContainer container = new CoreContainer(home.getPath());
container.load();
EmbeddedSolrServer server = new EmbeddedSolrServer(container, "collection1");

我遇到以下错误:

  

org.apache.lucene.store.LockObtainFailedException:Lock获取定时   出:   NativeFSLock @ C:\ solr的-4.6.0 \示例\ solr的\ collection1 \数据\索引\ write.lock

经过调查,加载CoreContainer时会发出错误。它试图锁定显然已锁定的索引中的文件。

进一步的调查显示,SolrRequestFilter(由Jetty初始化的那个)也实例化了一个CoreContainer,我的猜测是他是罪犯。当我从web.xml中删除SolrRequestFilter定义时,我能够成功实例化CoreContainer和EmbeddedServer。

我正在寻找有关如何克服这个问题的见解,因为它似乎应该可以工作。

1 个答案:

答案 0 :(得分:0)

您必须找到锁定此索引的人。

还有几种方法可能有所帮助:

  • 自从你开始使用嵌入式Solr之后,你需要确定Solr现在还没有运行(我敢打赌99%这是导致这个问题的原因)
  • 您可以手动删除此锁定文件