我試圖從.war文件內的servlet訪問配置文件。問題是,默認文件路徑是tomcat根本身,並且硬編碼文件的路徑似乎也不是一個選項。是否有可能通過ServletContext或任何Tomcat變量獲取任何信息?如何從部署爲.war文件並在Tomcat 5.5中運行的servlet訪問配置文件?
1
A
回答
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查找它,並且可以覆蓋它以用於測試目的,而無需修改源代碼。
相關問題
- 1. 如何將WAR文件部署到Tomcat 5.5?
- 2. 部署GWT的.war從Servlet在Tomcat中
- 3. 無法訪問部署war文件在Tomcat中
- 4. 無法在tomcat中部署.war文件
- 5. 無法在Tomcat上訪問已部署的WAR文件
- 6. 我想知道如何部署在Apache Tomcat上war文件,並使其運行
- 7. 如何在apache tomcat 8中將uaa部署爲war文件?
- 8. 部署帶配置的WAR文件
- 9. 在tomcat上部署war文件
- 10. 在Tomcat上部署war文件
- 11. 在aws apache tomcat上部署ans運行war文件
- 12. 如何從部署在同一個tomcat中的另一個war文件中重新配置war4文件
- 13. 如何在tomcat中部署Ldap war文件?訪問本地localhost:8080
- 14. 如何在部署爲war文件時運行Play Framework演變
- 15. Tomcat 8 Unicode文件名war文件部署問題
- 16. 如何在Docker容器的tomcat 7中部署war文件
- 17. 如何保護部署在tomcat服務器中的war文件?
- 18. 在Tomcat中手動部署WAR文件在Tomcat中手動
- 19. 部署WAR文件到Tomcat 7
- 20. MyEclipse - 將war文件部署到tomcat
- 21. Maven嵌入式tomcat部署war文件
- 22. Apache Tomcat 7 - war文件不部署
- 23. 如何部署war文件運行在amazon ec2實例上的tomcat
- 24. tomcat war部署
- 25. 在Tomcat中部署war
- 26. 在Tomcat上部署war文件並運行沒有項目名稱
- 27. 如何在tomcat中自動部署war文件
- 28. 從NetBeans向Tomcat部署WAR文件時出現問題
- 29. 在tomcat上部署的Servlet中寫入文件的問題
- 30. 如何從war文件外部訪問properties.properties文件?