【问题标题】:Using configuration in JAVA - best practice在 JAVA 中使用配置 - 最佳实践
【发布时间】:2016-03-20 11:48:52
【问题描述】:

就我而言,我有:

  1. LangDetector 是带有 HtmlTags.config 的 java 项目,它导出到 LangDetector.jar
  2. LangDetectionService 是导出到 WAR 文件的 java jersey 服务。 LangDetectionService 使用 LangDetector.jar(在构建路径中有引用)

当我在 tomcat 上部署 WAR 文件时,我在 $CATALINA_BASE/webapps/LangDetectionService 中看不到 HtmlTags.config

我也尝试将 HtmlTags.config 添加到 LangDetectionService,部署后 HtmlTags.config 位于 $CATALINA_BASE/webapps/LangDetectionService 文件夹中,但它不起作用。

这里有什么问题?这样做的最佳做法是什么?

【问题讨论】:

  • 有几件事要检查...首先,您确定HtmlTags.configLangDetector.jar 内吗?其次,您确定LangDetector.jarLangDetectionService.war 中吗?第三,LangDetector.jar 在你的分解目录中吗(在$CATALINA_BASE/webapps/LangDetectionService 下)? (我希望在那里看到你的罐子,仍然拉上拉链。)第四,你说你没有看到 HtmlTags.config你期待它......但它真的坏了吗?
  • 1.是的。 2. 是的。 3. LangDetector.jar 部署后在 $CATALINA_BASE/webapps/LangDetectionService/WEB-INF/lib 中。 4.也许不是,我想了解如何取出HtmlTags.config使其可以访问(如.NET中的app.config)

标签: java jar configuration tomcat7 war


【解决方案1】:
  1. 检查 HtmlTags.config 是否在 LangDetector.jar 中。它应该直接在 jar 文件根目录下。
  2. 检查 LangDetector.jar 是否在 LandDetectionService 战争文件 WEB-INF/lib 中

如果是这样,HtmlTags.config 应该在类路径中并且对您的服务可读。但是你的问题不清楚应该用什么代码读取这个 HtmlTags.config 文件。

你可以尝试这样读取这个文件:

log.debug("HtmlTags.config exists: " + new File("HtmlTags.config").exists());

,其中 log 是您的记录器。

和往常一样,您应该开始检查服务器和应用程序日志中的错误和警告。

你的问题让我想知道,为什么你需要在那个目录中看到那个文件?如果你想从你的应用程序中读取它,那么它应该在类路径中。物理位置并不重要,不是吗?

【讨论】:

  • 1.里面。 2. 里面。 3.“为什么你需要在那个目录中看到那个文件”——在不编译新 jar 的情况下改变值。但我不明白你在类路径中是什么意思。我需要在那里写什么?你能给我举个例子是基于我的情况吗?
  • 我解决了。 1. 将 HtmlTags.config 添加到服务项目。 2. 将"Configuration.class.getResourceAsStream("/" + configName)"行改为"Configuration.class.getClassLoader().getResourceAsStream(configName)"行。
  • 如果您打算写入 HtmlTags.config,则不应将其与您的应用程序打包在一起。而是放置它并使其可以从 Tomcat 外部访问。否则,您将在每次重新部署时覆盖您的配置文件,并且所有更改都将丢失。
【解决方案2】:

这是解决方案。 1. 将 HtmlTags.config 添加到服务项目。 2. 将 "Configuration.class.getResourceAsStream("/" + configName)" 行更改为 "Configuration.class.getClassLoader ().getResourceAsStream(configName)" 行。 3. 当 LangDetector.jar 将加载 HtmlTags.config 时,它将从服务项目中获取它(在 .NET 中的行为)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 2017-04-23
    • 2010-09-11
    • 1970-01-01
    相关资源
    最近更新 更多