solr - JNDI 中的 No/solr/home 虽然它是在 Catalina/localhost/solr.xml 中设置的

标签 solr tomcat7 apache-zookeeper solrcloud catalina

我将 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 部署,一个知道 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 实例记录到它自己的日志文件中。

关于solr - JNDI 中的 No/solr/home 虽然它是在 Catalina/localhost/solr.xml 中设置的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19718127/

相关文章:

java - 创建 java C :\Program Files\Java\jdk1. 7.0_05\jre\bin\client\jvm.dll 失败

java - Spark Streaming 中的 Kafka 消费者

java - 在java Android中解析JSON代码

用于非规范化混合语言文档的 Solr 语言检测更新处理器

java - 如何在安全上下文中以编程方式进行身份验证和创建 session

apache - 使用 mod_jk 的 apache-tomcat 连接不附带 HTTP 响应 header

linux - 将 nutch 数据索引到 solr 时出错

Solr suggest - 基于先前成功搜索填充字典文件的方法

python - 动物园管理员锁保持锁定状态

java - 无法让 ZooKeeper 集群工作,选举永远不会发生