2010-09-27 230 views
1

我必須訪問位於應用程序服務器文件系統目錄中的配置文件,但它不作爲我的Java EE應用程序的一部分進行部署。從Java EE應用程序訪問外部配置文件

在這種情況下,getResourceAsStream()會幫助我嗎?

回答

2

請問getResourceAsStream()在這種情況下能幫我嗎?

除非配置文件在類路徑上,否則不會。除非您可以說服應用程序服務器通過某些非標準方式爲您提供它,否則您將使用java.io來執行您所需的操作。

這會讓你脫離JavaEE領域,並且有可能與應用服務器的安全模型發生衝突。

+0

你是說,使用java.io是根據安全風險應用服務器模型? – Kapsh 2010-09-27 19:34:14

+0

@Kapsh:沒有風險,因此,應用程序服務器可能被配置爲禁止它。 – skaffman 2010-09-27 19:35:19

1

在實時應用程序中,「外部配置」文件起着非常重要的作用。外部化屬性文件可以簡化您的構建和部署過程。 因爲這些放置在外部位置(未包含在WAR文件中),所以對這些位置的任何更改 都不需要新的構建和部署。

爲了外部化屬性文件,只需將屬性文件放在 的外部文件夾中,並通過將該文件夾放置到Classpath 中使其可以被JVM訪問,如下所示。假設你把你的propety文件放在「C:\ conf」中

  1. 添加這個文件夾來設置ENV或者像這樣的服務器啓動腳本。

    set "CLASSPATH=%CLASSPATH%%CATALINA_HOME%\bin\bootstrap.jar;C:\conf 
    
  2. 或者在Java Cmd後添加如下代碼,如下所示。

    java -cp c:\conf yourClass 
    
  3. 請WEB-INF/classes中您的配置文件夾要閱讀本使用 「的getResourceAsStream」

    getClass().getClassLoader().getResource("Configuration.properties").getFile(); 
    
相關問題