gpt4 book ai didi

tomcat - Apache SOLR 4.1 类加载器问题与 Lucene 实现

转载 作者:行者123 更新时间:2023-11-28 22:31:39 25 4
gpt4 key购买 nike

我最近在将 Apache SOLR 4.1 war 文件部署到我们的 tomcat 6 服务器时遇到了问题。在服务器库($CATALINA_HOME/lib)中,我们有一个较旧的 lucene 实现库(2.9+),用于一些遗留搜索应用程序。 SOLR 在其 .war 文件 WEB-INF/lib 中有更新的 4.1 lucene 实现 jar 文件。通过检查 Tomcat 6 文档,SOLR 库似乎应该首先加载;然而,根据经验,情况并非如此:如果我将其部署到正在运行的服务器,管理仪表板会显示其正在加载 2.9.0 lucene 实现。

添加另一个转折点:如果我停止并重新启动 Tomcat 服务器,则会切换到 4.1!正如您可能想象的那样,这让我对从属复制感到悲伤;因为我相信我的初始索引是通过 2.9 lucene 构建的,所以在某个时候重新启动了容器,使用当时加载的 4.1 进行了更新,并尝试复制到 2.9 lucene 实现从属设备,导致它们全部失败。

欢迎在这里提出任何建议。我尝试从 SOLR war 文件中删除 4.1 库,但它无法加载,因为某些依赖项似乎需要它们(尽管类加载器在部署后选择了“公共(public)库”lucene 实现!)更新所有旧版是不可行的这些服务器上的软件升级到 lucene 4,将涉及尽可能多的重写。知道为什么类加载器会以这种方式执行吗?

编辑:更复杂的是,如果我在新启动的 Tomcat 上有 SOLR 显示 4.1.0 lucene 实现,然后重新加载核心或通过 Tomcat 管理器重新加载 webapp,它会返回到 2.9.0!这显然是 Not Acceptable 。

最佳答案

在给定的场景中,我会选择在另一个 Web 容器中运行 Solr(可能是一个像码头这样的轻量级容器)。但我不确定您的架构是否具有这种灵 active ,或者您可能担心这些容器的可维护性。如果您不受这些问题的影响,您可以继续采用这种方法。

另一种选择是要求您的 Tomcat 将您的 WEB-INF 库 (WEB-INF/lib) 用于 Solr 和服务器库 ($CATALINA_HOME/lib) 以使用 lucene 进行遗留搜索。

可以在Web-logic Server中通过参数实现,

<container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>

在 Solr 网络应用程序的“weblogic.xml”中。

希望在 Tomcat 中也有这样做的选项!

关于tomcat - Apache SOLR 4.1 类加载器问题与 Lucene 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15072349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com