2009-06-01 48 views

回答

1

如果你把文件中的「類」目錄特定的webapps目錄下(./webapps/{servlet}/classes),那麼你可以從一個Java類中做這個訪問:

Class.getResourceAsStream(<filename>); 

所以,如果你有在/ webapps /下myServlet/conf文件classes/conf.xml

Class.getResourceAsStream("conf.xml"); 
0

我並不確定這是「正確」的事情,但是在過去,我已經讀取了配置文件路徑的環境變量。

像這樣的東西(你應該做的處理比這個例子,例外一個更好的工作......但你明白了吧):

public File getConfigurationFile() { 
    String envPath = System.getEnv("CONFIG_FILE"); // Use a better-named variable 
    if(envPath == null || envPath.equals("") { 
     throw new RuntimeException("CONFIG_FILE environment variable not set."); 
    } else { 
     File f = new File(envPath); 
     if(!f.exists()) { 
     throw new RuntimeException("CONFIG_FILE environment variable points to non-existent file"); 
     } else if(!f.isFile()) { 
     throw new RuntimeException("CONFIG_FILE environment variable points to non-file entity."); 
     } else if(!if.canRead()) { 
     throw new RuntimeException("CONFIG_FILE points to unreadable file."); 
     } else { 
     return f; 
     } 
    } 
} 
1

甘道夫提供了「正確的」答案。你可以安全地在任何地方使用。這就是你需要的一切。

只是謹慎。有些人認爲,因爲可以從WAR中讀取數據,所以這意味着在WAR中寫入數據也是可以的。從字面意義上講,有時候這是真的。但不總是。它幾乎從不安全。

我提到這個是因爲我繼承了一個完全做到這一點的webapp。在分解的WAR目錄中存儲整個文件目錄樹。首次軟件升級,「Poof!」所有那些仔細上傳的數據文件都沒有了。

因此將WARs視爲只讀。如果您需要編寫,請在應用程序服務器外指定一個目錄。最好將它作爲web.xml文件中的可配置參數,以便您可以使用JNDI查找它,並且可以覆蓋它以用於測試目的,而無需修改源代碼。

相關問題