【问题标题】:No /solr/home in JNDI althought it's set in Catalina/localhost/solr.xmlJNDI 中没有 /solr/home 虽然它是在 Catalina/localhost/solr.xml 中设置的
【发布时间】:2013-11-12 03:27:36
【问题描述】:

我已将 solr-4.5.0 配置为与 tomcat7 和 zookeeper 3.3.5 一起使用(来自 debian 包) 根据我在Catalina/localhost/solr.xml 文件之后创建的许多教程

<Context allowlinking="true" crosscontext="true" debug="1" docBase="/var/lib/tomcat7/webapps/solr.war" priviledged="true">
 <Environment name="solr/home" override="true" type="java.lang.String" value="/opt/solr/webapps/solr1" />
</Context>

我已经在 2 台机器上配置了 solr 以在云中工作(使用 zookeeper 来保持配置)。 在两台机器上,启动tomcat7时,我在catalina.out看到以下错误:

11693 [localhost-startStop-1] INFO  org.apache.solr.core.SolrResourceLoader  – No /solr/home in JNDI
....
12529 [coreLoadExecutor-3-thread-1] ERROR org.apache.solr.core.CoreContainer  – Failed to load file /var/lib/tomcat7/solr/collection1/solrconfig.xml
12532 [coreLoadExecutor-3-thread-1] ERROR org.apache.solr.core.CoreContainer  – Unable to create core: collection1
org.apache.solr.common.SolrException: Could not load config file /var/lib/tomcat7/solr/collection1/solrconfig.xml

有趣的是,在该文件的开头我看到:

64   [localhost-startStop-1] INFO  org.apache.solr.core.SolrResourceLoader  – Using JNDI solr.home: /opt/solr/webapps/solr1
71   [localhost-startStop-1] INFO  org.apache.solr.core.SolrResourceLoader  – new SolrResourceLoader for directory: '/opt/solr/webapps/solr1/'

当然我想在 JNDI 中配置 solr/home,而不是在 solr.war 中。 知道可能出了什么问题吗?

附: 这个问题不是这样的问题的重复: How to set solr/home in linux OS? 和这个: deploy war in Tomcat 不同之处在于我正在定义 solr/home 但它似乎不起作用。

【问题讨论】:

  • 同一个tomcat上是否有两个不同的solr实例? (例如 webapps/solr.war 和 webapps/solr1/
  • 另外,你能在71 [localhost-startStop-1] INFO org.apache.solr.core.SolrResourceLoader – new SolrResourceLoader for directory: '/opt/solr/webapps/solr1/'之后显示下几行吗?
  • 还有一件事——根据tomcat 7.0 documentation一些Context参数不应该完全小写(例如allowlinking => allowLinking, crosscontext => crossContext),特权有一个错字(应该是特权),并且没有调试这样的选项。
  • @rchukh: That 是问题所在。我在 /var/lib/tomcat7/webaps/solr.backup 中创建了一个备份目录,并且没有引发 solr/home,同时:“部署 Web 应用程序目录 /var/lib/tomcat7/webapps/solr.backup”
  • #rchuk:您可能想写此评论作为获得赏金的答案。

标签: solr tomcat7 apache-zookeeper solrcloud catalina


【解决方案1】:

这个问题与一个 tomcat 上有两个不同的 solr 部署有关,其中一个知道 solr.home,另一个不知道。

如果日志中有一行显示:

org.apache.solr.core.SolrResourceLoader  – Using JNDI solr.home: /opt/solr/webapps/solr1

那么它实际上意味着 some solr 实例找到了 solr.home 参数。

但如果有多个部署(例如,用于分片测试),并且 solr.home 设置为每个部署,而不是服务器范围(例如 -Dsolr.solr.home=/some/dir),那么某些部署可能启动失败。

为避免此类问题(或至少使其更易于调试) - 可以将每个 Solr 实例记录到它自己的日志文件中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-23
    • 2019-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    • 1970-01-01
    相关资源
    最近更新 更多