我必須訪問位於應用程序服務器文件系統目錄中的配置文件,但它不作爲我的Java EE應用程序的一部分進行部署。從Java EE應用程序訪問外部配置文件
在這種情況下,getResourceAsStream()會幫助我嗎?
我必須訪問位於應用程序服務器文件系統目錄中的配置文件,但它不作爲我的Java EE應用程序的一部分進行部署。從Java EE應用程序訪問外部配置文件
在這種情況下,getResourceAsStream()會幫助我嗎?
請問
getResourceAsStream()
在這種情況下能幫我嗎?
除非配置文件在類路徑上,否則不會。除非您可以說服應用程序服務器通過某些非標準方式爲您提供它,否則您將使用java.io
來執行您所需的操作。
這會讓你脫離JavaEE領域,並且有可能與應用服務器的安全模型發生衝突。
在實時應用程序中,「外部配置」文件起着非常重要的作用。外部化屬性文件可以簡化您的構建和部署過程。 因爲這些放置在外部位置(未包含在WAR文件中),所以對這些位置的任何更改 都不需要新的構建和部署。
爲了外部化屬性文件,只需將屬性文件放在 的外部文件夾中,並通過將該文件夾放置到Classpath 中使其可以被JVM訪問,如下所示。假設你把你的propety文件放在「C:\ conf」中
添加這個文件夾來設置ENV或者像這樣的服務器啓動腳本。
set "CLASSPATH=%CLASSPATH%%CATALINA_HOME%\bin\bootstrap.jar;C:\conf
或者在Java Cmd後添加如下代碼,如下所示。
java -cp c:\conf yourClass
請WEB-INF/classes中您的配置文件夾要閱讀本使用 「的getResourceAsStream」
getClass().getClassLoader().getResource("Configuration.properties").getFile();
你是說,使用java.io是根據安全風險應用服務器模型? – Kapsh 2010-09-27 19:34:14
@Kapsh:沒有風險,因此,應用程序服務器可能被配置爲禁止它。 – skaffman 2010-09-27 19:35:19