在運行時在jar/war文件中更改config.properties文件並熱部署更改? 我的需求如下,我們在jar/war文件中有一個「config.properties」,我必須通過網頁打開文件,在用戶對它進行了必要的更改後,我必須更新「config .properties「放在jar/war文件中,然後熱部署它。我們可以實現這一壯舉嗎?如果是的話,請你指點我的相關網站/文件,以便我可以開始這個。在運行時在jar/war文件中更改config.properties文件,並熱部署更改?
2
A
回答
1
你有一對夫婦的問題,把我的頭頂部:
確保沒有持有
static
引用到預先加載您config.properties
文件java.util.Properties
。最servlet引擎將解開你的戰爭到工作目錄,以便屬性文件加載不會是一個在戰爭中,這將是一個解壓。這意味着當您重新啓動servlet引擎時,您的更改 將被覆蓋,因爲這通常是戰爭解包的一個要點。
雖然這些問題並非不可逾越我總是發現它更容易通過存儲在JNDI屬性(如托爾比約恩建議)或數據庫(同時注意對靜態引用實現這樣的行爲我在第1點提到)。
JNDI /數據庫解決方案具有很好的緩解部署到多個環境的負面影響,因爲每個解決方案通常都有自己的註冊表/數據庫。
4
我強烈建議你的architecht重新考慮這個解決方案。您所描述的內容應該通過JNDI或類似技術完成,而不是通過重新加載屬性。
部署應該被認爲是靜態的 - 任何給定的網絡容器都不應該依賴於魔術,而且會在某一天(最可能是在最不方便的時間)中斷。
1
即使我同意上司的評價之前解釋的,我可以建議一個解決方案:
阿帕奇百科全書配置擴展給你posibility做這樣的事情:
config.setReloadingStrategy(new FileChangedReloadingStrategy());
這可能使招基於運行時更改配置文件,根本沒有代碼。
但是,像JNDI和其他Web應用程序配置方法一樣,安全性是一個問題。要小心你可以/必須能夠配置哪些參數。
相關問題
- 1. JavaScript文件更改部署
- 2. 更改配置文件/部署時間
- 3. 在運行時更改QML小部件
- 4. intellij webapp熱部署更改爲html文件
- 5. 部署後更改文件夾權限
- 6. 使用Git部署更改的文件
- 7. 運行時更改log4net文件名
- 8. 運行時更改類文件
- 9. 如何防止JSP/JSF文件在部署時發生更改?
- 10. 爲什麼GAE在部署時跳過更改的文件?
- 11. 在運行時更改.NET ClickOnce部署的更新位置
- 12. 在運行時創建jrxml文件並在運行時修改
- 13. 在運行時使用屬性文件更改文本/內容
- 14. 在git中更改跟蹤文件並允許分支更改
- 15. Java:在程序運行時更新.txt文件並能夠看到更改
- 16. WPF在運行時更改控件模板中的文本
- 17. 更改文件中的行
- 18. 如何更改部署在遠程Jboss中的.war文件中的CSS文件
- 19. 在Tomcat中熱部署類文件
- 20. 如何區分/合併對部署項目文件的更改
- 21. 離子運行更改文件返回
- 22. 文件更改未在Tensorflow中更新
- 23. 在不更改GWT文件的情況下部署到AppEngine
- 24. MATLAB在執行文件時如何處理文件更改?
- 25. 僅在文件更改時運行Karma測試
- 26. 獨立應用程序在運行時配置文件更改?
- 27. WPF:在運行時更改配置文件的用戶設置?
- 28. 在運行時更改批處理文件
- 29. 在運行時更改Visual Studio設置文件
- 30. 在運行時動態更改m3u8文件(iOS)