在JNDI中没有/solr/home,尽管它设置在Catalina/localhost/solr中.xml



我配置了 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中。知道可能出了什么问题吗?

附言:这个问题不是像这样的问题的重复:如何在 Linux 操作系统中设置 solr/home?而这个:在雄猫中部署战争不同之处在于我正在定义 solr/home,但它似乎不起作用。

这个问题与以下事实有关:在单个雄猫上有两种不同的 solr 部署,其中一种知道 solr.home,另一种不知道。

如果日志中有一行显示:

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

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

但是,如果有多个部署(例如

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

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

最新更新