2015-12-14 68 views
0

在我的情況,我有:使用配置 - 最佳實踐

  1. LangDetectorHtmlTags.config的Java項目,遠銷LangDetector.jar
  2. LangDetectionService是導出爲WAR文件的java球衣服務。 LangDetectionService使用LangDetector.jar(在構建路徑參考)

當我部署在Tomcat WAR文件,我沒有看到HtmlTags.config在$ CATALINA_BASE/webapps /目錄LangDetectionService。

我試圖HtmlTags.config添加到LangDetectionService也和部署HtmlTags.config後在$ CATALINA_BASE/webapps /下LangDetectionService文件夾,但它不工作。

這裏有什麼問題?最佳做法是什麼?

+0

有幾件事要檢查......首先,你是否確信*那個'HtmlTags.config'在'LangDetector.jar'裏面?其次,你確定* LangDetector.jar是否在'LangDetectionService.war'中?第三,你的爆炸目錄中的'LangDetector.jar'(在$ CATALINA_BASE/webapps/LangDetectionService'下)? (我希望看到你的jar在那裏,仍然拉鍊。)第四,你說你沒有*看到* HtmlTags.config'你期待它......但它實際上是壞了嗎? – dcsohl

+0

1.是的。是的。 3.部署後,LangDetector.jar位於$ CATALINA_BASE/webapps/LangDetectionService/WEB-INF/lib中。也許不是,我想了解如何取出HtmlTags。配置它可以訪問(像.NET中的app.config) – Rougher

回答

1
  1. 檢查HtmlTags.config是否在LangDetector.jar中。它應該直接在jar文件根目錄下。
  2. 檢查LangDetector.jar是LandDetectionService war文件的WEB-INF/lib目錄

裏面如果是這樣,HtmlTags.config應該在類路徑和可讀性爲你服務。但是什麼代碼應該讀取這個HtmlTags.config文件不清楚你的問題。

你可以嘗試讀取這個文件那樣:

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

,其中log是你的記錄。

和往常一樣,您應該開始檢查您的服務器和應用程序日誌是否有錯誤和警告。

而你的問題讓我想知道爲什麼你需要在那個目錄中看到那個文件?如果你想從你的應用程序讀取它,那麼它應該在classpath中。物理位置不是很重要,還是它?

+0

1.內部。 2.內部。 3.「爲什麼你需要在那個目錄中看到那個文件」 - 改變值而不需要滿足新的jar。但我不明白你在classpath中的含義。我需要在那裏寫什麼?你能給我舉個例子是基於我的情況嗎? – Rougher

+0

我解決了它。 1.將HtmlTags.config添加到服務項目。 2.將「Configuration.class.getResourceAsStream(」/「+ configName)」行更改爲「Configuration.class.getClassLoader().getResourceAsStream(configName)」行。 – Rougher

+0

如果您打算寫入HtmlTags.config,則不應將其與應用程序一起打包。取而代之的是讓它可以從Tomcat以外的地方訪問。否則,每次重新部署時都會覆蓋配置文件,所有更改都將丟失。 –

0

這是個解決方案。 1.將HtmlTags.config添加到服務項目。 2.將「Configuration.class.getResourceAsStream(」/「+ configName)」行更改爲「Configuration.class.getClassLoader().getResourceAsStream(configName)」行。 3.當LangDetector.jar加載HtmlTags.config時,它會從服務項目中獲得它(類似於.NET中的行爲)