0

我正在尝试将 apache solr4.5 与 tomcat7.0 集成。

这是我的问题,我在 $CATALINA_BASE/webapps 下创建了一个名为“solr”的目录,并在路径下创建了一个 context.xml,目录结构如下所示。

$CATALINA_BASE/webapps/solr/META-INF/context.xml

context.xml 如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<Context docBase="/solr/home/root/solr.war">
     <Environment name="solr/home" type="java.lang.String" value="/solr/home/root" />
</Context>

我期待当我访问“localhost:8080/solr/”时,solr webapp 应该可以正常工作,但我得到的是一些这样的错误:

HTTP Status 404 - /solr/

type Status report

message /solr/

description The requested resource (/solr/) is not available.

Apache Tomcat/7.0.26

但是根据apache tomcat7.0的文档,

可以明确定义各个上下文元素:

  1. 在应用程序文件内 /META-INF/context.xml 的单个文件中。或者(基于主机的 copyXML 属性)可以将其复制到 $CATALINA_BASE/conf/[enginename]/[hostname]/ 并重命名为应用程序的基本文件名加上“.xml”扩展名。

  2. 在 $CATALINA_BASE/conf/[enginename]/[hostname]/ 目录中的单个文件(带有“.xml”扩展名)中。上下文路径和版本将从文件的基本名称(文件名减去 .xml 扩展名)派生。此文件将始终优先于打包在 Web 应用程序的 META-INF 目录中的任何 context.xml 文件。

  3. 在主 conf/server.xml 的 Host 元素中。

所以,请大家给我一些线索,谢谢。

4

2 回答 2

0

如果您检查位于 /logs 中的 catalina 日志文件,您可能会看到来自 Solr 的一些错误,其中之一是:

 SEVERE: Error filterStart

这是由于从 4.3 版开始,现在在 Solr 中实现一般日志记录的方式发生了变化。请参阅SolrLogging - 在 Jetty 以外的容器中使用示例日志记录设置,了解在 Tomcat 中设置日志记录的必要步骤。

这应该可以解决您的问题。

于 2013-10-09T02:16:54.510 回答
0

尝试将您的context.xml(对于所有 webapps)或solr.xml(仅 solr)文件放在Catalina/localhost文件夹中。

例如:

<Context docBase="webapps/solr.war" allowLinking="true" reloadable="true">
  <Environment name="solr/home" type="java.lang.String" value="/opt/solr" override="true" />
</Context>

故障排除:

  • 检查您的日志,例如:

    cd /var/log/tomcat? && tail -f *.log *.out *.txt
    
于 2015-06-03T21:09:24.023 回答