簡體   English   中英

Java:訪問war中的屬性文件

[英]Java: Accessing properties file inside a war

我已經在StackOverflow中搜索了“戰爭中的屬性”,但是沒有一個結果適用於我的情況。

我正在使用Eclipse Galileo和GlassFish v3來開發一組Web服務。 我正在使用具有以下結構的“動態Web項目”

Src
-java_code_pkg_1
-java_code_pkg_2
-com.company.config
--configfile.properties WebContent
-META-INF
-WEB-INF
--log4jProperties
--web.xml
--applicationContext.xml
--app-servlet.xml

我想訪問“java_code_pkg1”中的一個源文件中的“configfile.properties”。 我正在使用Spring Framework,一旦應用程序在服務器上啟動,這個文件就會被實例化。

我試過以下沒有運氣

getResourceAsStream("/com.company.config/configfile.properties");
getResourceAsStream("/com/company/config/configfile.properties");
getResourceAsStream("com/company/config/configfile.properties");
getResourceAsStream("/configfile.properties");
getResourceAsStream("configfile.properties");

getResourceBundle(..) didn't work either.

當它不在WEB-INF / classes路徑下時是否可以訪問文件? 如果是的話怎么樣?

謝謝

Properties props = new Properties();
props.load(this.getClass().getResourceAsStream("/com/company/config/file.properties"));

我在調試模式時工作。 我可以在調試器中看到這些值,但是在執行“props.load”行之后,在進入它下面的燈之前,我得到一個NullPointerException。

那是一個不同的問題。 至少現在我知道這是訪問配置文件的方法。

謝謝您的幫助。

如果你在戰爭中,你的類路徑“當前目錄”是“WEB-INF / classes”。 簡單地上升兩個級別。

getResourceAsStream("../../com/company/config/configfile.properties");

這太可怕但它確實有效。 至少,它可以在tomcat,jboss和geronimo下工作,它今天起作用。

PS你的目錄結構不是很清楚。 也許它是:

getResourceAsStream("../../com.company.config/configfile.properties");

檢查WAR文件中屬性文件的位置。 如果它位於com / company / config目錄下的WEB-INF / classes目錄中,則getResourceAsStream("com/company/config/configfile.properties")應該工作或getResourceAsStream(“如果配置文件不在WEB-INF下,這應該可以工作/ classes directoy

還可以嘗試使用getClass()。getClassLoader()。getResourceAsStream。

您確定該文件包含在您的war文件中嗎? 很多時候,war構建過程會過濾掉非.class文件。

一旦部署到服務器,路徑是什么? 可以使用Scanner手動讀入資源。 從包中的java文件,創建一個新文件(“../ applications /”)將獲得一個指向{glassfish install} \\ domains \\ {domain name} \\ applications的文件。 也許你可以改變那個文件路徑,引導你到你需要去的地方?

由於您使用的是Spring,因此請使用Spring中的Resource支持直接注入屬性文件。

請參閱http://static.springsource.org/spring/docs/3.0.x/reference/resources.html

即使需要屬性文件的類不是Spring管理的,您仍然可以訪問ApplicationContext並使用它來加載資源

資源類似於classpath:settings.properties,假設您的屬性文件被構建器拾取並放入war文件中。

您也可以直接從文檔中注入:

<property name="template" value="classpath:some/resource/path/myTemplate.txt">

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM