我在JBoss 4.0.2中有一個部署爲war的servlet。我有一個部署應用程序的屬性文件。我應該在哪裏放這個文件?在jboss server \ default \ conf文件夾的conf目錄下?如何以便攜式方式加載該屬性文件?在作爲戰爭部署在JBoss中的java servlet中加載屬性文件
回答
來加載性能在便攜式方式文件,最好的辦法是把它放在Web應用程序的類路徑(無論是在JAR下WEB-INF/lib/
或下WEB-INF/classes/
或應用服務器的classpath,如果你想能夠編輯該文件而無需重新打包您的Web應用程序)並使用Class#getResourceAsStream(String)
。
以下代碼獲取一個InputStream
爲駐留在同一個包作爲servlet在其中執行的代碼屬性文件:
InputStream inStream = Thread.currentThread().getContextClassLoader()
.getResourceAsStream("myfile.properties");
然後,load(InputStream)
它變成一個Properties
對象(跳過異常處理) :
Properties props = new Properties();
props.load(inStream);
最好的地方,把它就是網絡應用自己的文檔根目錄下,如「./WEB-INF/myapp.properties」,即相對於在servlet容器解開你的.war
或.ear
文件。您可以直接在.war
中提供屬性文件。
ServletContext
有一個方法getRealPath(String path)
返回文件系統中的實際路徑。使用真實路徑,您可以將其加載到Properties
集合中。
更新 您的評論代碼試圖查找爲「/」真正的路徑,你應該問你的屬性的相對路徑文件,如:
String propertiesFilePath = getServletContext().getRealPath("WEB-INF/application.properties");
Properties props = properties.load(new FileInputStream(propertiesFilePath));
所以我嘗試了以下內容: String propertiesFilePath = getServletContext()。getRealPath(「/」)+ File.separator +「WEB-INF」+ File.separator +「application.properties」; properties.load(new FileInputStream(propertiesFilePath)); 我得到一個FileNotFoundException。我不明白我做錯了什麼。 – Carlosfocker 2010-01-06 20:13:49
如果屬性文件可以與應用程序一起部署使其成爲源代碼樹的一部分。這將導致屬性文件位於WEB-INF/classes文件夾中。
然後可以使用
Properties properties = loadProperties("PropertyFileName.properties", this.getClass());
...
public static Properties loadProperties(String resourceName, Class cl) {
Properties properties = new Properties();
ClassLoader loader = cl.getClassLoader();
try {
InputStream in = loader.getResourceAsStream(resourceName);
if (in != null) {
properties.load(in);
}
} catch (IOException e) {
e.printStackTrace();
}
return properties;
}
只要得到ServletContext中的保持和再
InputStream stream = getServletContext().getResourceAsStream("/WEB-INF/log4j.properties");
Properties props = new Properties();
props.load(stream);
這將總是工作,無論你是否部署戰爭或戰爭爆炸閱讀。
- 1. 在Jboss部署戰爭 - MAVEN
- 2. JBoss戰爭部署
- 3. JBoss 6 - 戰爭部署
- 4. 將戰爭部署到JBOSS
- 5. 在jboss上部署戰爭as7
- 6. Jboss不部署戰爭,JBAS011006
- 7. JBoss AS 7中的戰爭部署
- 8. 在jboss的部署目錄之外部署戰爭
- 9. 在jboss中部署不同名稱的相同戰爭5
- 10. 在linux上部署戰爭
- 11. 的JBoss 7.1沒有部署戰爭
- 12. ant任務在jboss上部署/取消部署戰爭
- 13. jboss 7部署問題與戰爭
- 14. GlassFish 3中部署的戰爭文件
- 15. 戰爭文件部署
- 16. JBOSS戰爭部署無法使用mysqlds.xml
- 17. JBoss 4.x沒有將src文件夾部署到戰爭中
- 18. 部署grails 2.1.1戰爭到JBoss 5.1
- 19. 在戰爭中共享JSP文件,在java中使用forward Servlet
- 20. 從intellij和maven在jboss 7上部署爆炸式戰爭
- 21. Jboss 7戰爭部署失敗
- 22. 如何使用Jboss Tools Eclipse插件在Jboss中「熱」部署戰爭依賴?
- 23. Glassfish戰爭部署Jar未加載
- 24. 在servlet中加載屬性文件?
- 25. 通過命令行在Jboss 7.0.1中部署戰爭
- 26. JBoss 6 - 在戰爭包裝中部署ejb
- 27. 的Jboss 7部署支柱戰爭文件
- 28. 戰爭部署init方法
- 29. 戰爭部署玩
- 30. 部署到JBoss 7的Resteasy戰爭抱怨沒有發現「org.resteasy.plugins.server.servlet.ResteasyBootstrap」
需要這個項目得到取消,所以我從未跟進過。 – Carlosfocker 2010-12-29 15:09:03