2013-10-31 33 views
3

我已将solr-4.5.0配置为使用tomcat7和zookeeper 3.3.5(来自debian包) 根据许多教程我以下Catalina/localhost/solr.xml文件JNDI中没有/ solr/home虽然它在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的云工作(使用的动物园管理员,以保持配置)创造了。 在两台机器上,开始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 

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

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中。 任何想法可能是错的?

P.S: 这个问题不是这样的问题重复: How to set solr/home in linux OS? 这: deploy war in Tomcat 不同的是,我定义的Solr /家,但它似乎没有工作。

+2

是否有任何机会在同一个tomcat上有两个不同的solr实例? (例如,webapps/solr.war和webapps/solr1/< - 其中solr1是extracter solr.war)? – rchukh

+0

另外,你可以在'71 [localhost-startStop-1] INFO org.apache.solr.core.SolrResourceLoader - 用于目录的新SolrResourceLoader:'/ opt/solr/webapps/solr1 /''后面显示下几行吗? – rchukh

+3

还有一件事 - 根据[tomcat 7.0文档](http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Defining_a_context),一些'Context'参数不应该是完全小写的(例如allowlinking => allowLinking,crosscontext => crossContext),priviledged有一个错字(应该有特权),并且没有调试等选项。 – rchukh

回答

3

该问题与在单个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实例记录到它自己的日志文件中。

相关问题