java - 如何让 war 使用与应用程序容器不同的 jar 版本?

标签 java maven tomcat solr openshift

我正在尝试在 OpenShift 上安装 Solr,部署 vanilla Solr war。我已经让它大部分工作了,但是日志记录抛出了一个 NoSuchMethodError 异常 b/c Solr 正在尝试使用 JBoss 的 log4j 版本 1.2.14 而不是 Solr 需要的 1.2.16(但是,两者都已加载)。

我已经调整了 catalina.properties (common.loader) 以加载 1.2.16,但我不知道如何明确地说“solr.war 应该使用 log4j-1.2.16”,或者通过更改 jar 加载的某些优先级或顺序。由于 OpenShift 写入限制,我不能只将 JBoss 版本升级到 1.2.16(我怀疑我应该这样做)。

有没有... a) 我可以进行配置更改以使 war 使用特定加载的 jar? b) 我应该把整个东西打包成一个 ear 文件吗? (我对此了解不多) c) 我应该尝试使用 Maven 为我构建和配置所有这些吗?如果是这样,我该如何开始?

最佳答案

你可以rsync来自

的文件

{solr_code_base}/examples/lib/ext/

$OPENSHIFT_DATA_DIR/solrhome/lib

在您的本地仓库中,添加以下路径

common.loader=...,/var/lib/openshift/{#id}/app-root/data/solrhome/lib/*.jar

(将 {#id} 替换为您的 openshift 用户 ID)

.openshift/config/catalina.properties 中并将更改推送到 openshift。

并将{solr_code_base}/example/resources/log4j.properties文件复制到.openshift/config/

对我有用

关于java - 如何让 war 使用与应用程序容器不同的 jar 版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20407754/

相关文章:

java - 登录然后以线程安全的方式发出请求

java - Maven 和 native 库文件

java - 在 Tomcat 中安装更新的 SSL 证书

php - 如何更改 bitnami redmine 默认 URL

tomcat - 将 BIRT Viewer 3.7.1 部署到 Tomcat Server 7.0

java - 由 : java. lang.ClassNotFoundException : org. apache.chemistry.opencmis.server.shared.AbstractCmisHttpServlet 引起

java - Android模拟器访问IIS Express

java - Cloud Dataflow 中与序列化 Coder 相关的 RuntimeException

eclipse - 我应该如何向maven项目及其源文件添加许可证信息

java - maven 没有为 spring boot 项目创建 META-INF