在JAVA中使用配置 - 最佳实践

时间:2015-12-14 20:59:42

标签: java jar configuration tomcat7 war

就我而言,我有:

  1. LangDetector 是带有 HtmlTags.config 的java项目,导出到 LangDetector.jar
  2. LangDetectionService 是导出为WAR文件的java jersey服务。 LangDetectionService 使用 LangDetector.jar (在buildpath中有引用)
  3. 当我在tomcat上部署WAR文件时,我在$ CATALINA_BASE / webapps / LangDetectionService中看不到 HtmlTags.config

    我也尝试将 HtmlTags.config 添加到 LangDetectionService ,并在部署 HtmlTags.config 之后在$ CATALINA_BASE / webapps / LangDetectionService文件夹中,但它没有用。

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

2 个答案:

答案 0 :(得分:1)

  1. 检查HtmlTags.config是否在LangDetector.jar中。它应该直接在jar文件根目录下。
  2. 检查LangDetector.jar是否在LandDetectionService war文件WEB-INF / lib中
  3. 如果是这样的话,HtmlTags.config应该在类路径中并且对您的服务可读。但是从你的问题中不清楚这个HtmlTags.config文件的代码应该是什么。

    您可以尝试这样读取此文件:

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

    ,其中log是您的记录器。

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

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

答案 1 :(得分:0)

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