我正在設計一個相當小的Web應用程序,它將在Sun應用程序服務器(v9.1)上運行。它只有幾頁,沒有自己的數據庫,並且會通過Web服務檢索/更新數據。在我們預計需要偶爾更新(每年幾次?)的系統管理員頁面上有一段文字。允許更新該文本塊的最佳方法是什麼?我應該在哪裏設置這個配置?
我不認爲修改Web服務提供文本是一個可行的選擇。如果我們不必爲了進行更新而不必重新啓動Web應用程序,這也會很好。
我正在設計一個相當小的Web應用程序,它將在Sun應用程序服務器(v9.1)上運行。它只有幾頁,沒有自己的數據庫,並且會通過Web服務檢索/更新數據。在我們預計需要偶爾更新(每年幾次?)的系統管理員頁面上有一段文字。允許更新該文本塊的最佳方法是什麼?我應該在哪裏設置這個配置?
我不認爲修改Web服務提供文本是一個可行的選擇。如果我們不必爲了進行更新而不必重新啓動Web應用程序,這也會很好。
如果使用屬性文件是一個選項,則可以使用Commons Configuration從類路徑加載它(因此它可能在WAR之外),並使用automatic reloading功能在發生更改時重新加載它。
(編輯:爲了回答關於共享配置一個評論,我認爲,它可能不是Apache的代碼的最好的一塊,但我不能說,我覺得這是一場噩夢:
PropertiesConfiguration config = new PropertiesConfiguration("usergui.properties");
config.setReloadingStrategy(new FileChangedReloadingStrategy());
使用性能可能不是很理想,但是,那麼,對於HTML塊,它應該做的伎倆)
有重讀你的問題:
如果文字是需要改變的唯一屬性,那麼屬性文件不是正確的解決方案。而且我們正處於servlet環境中,並且很少改變它。
我認爲文本應該從純文本文件讀取(通過通常的文件I/O方法)到生命週期監聽器的ServletContext中。如果您想更改文本,請使用編輯器,然後快速重新啓動該servlet,即可完成。該應用程序可以引用聽衆放入上下文中的(單個)內存中副本,它可以快速運行並且很容易更改。
您可以保留它在propeties file格式,並使用java.util.ResourceBundle
從它得到的值。這樣,您可以使用ResourceBundle#clearCache()
或提供自定義ResourceBundle#Control
來控制緩存。
+1屬性文件是要走的路。把它們放在classpath中或者把它的路徑添加到webapp的類路徑中,你會沒事的。 – BalusC 2009-11-13 18:59:49
我被要求將Commons Configurations引入到我幾年前的一個項目中。這是一場噩夢!我的看法是,'Configurations'不是Apache更好的代碼之一。對於一些簡單的設置,我同意BalusC的屬性文件是一個更方便的選項。 – 2009-11-13 19:11:06
這不是我如何理解BalusC的評論,但你可以自由閱讀你想閱讀的內容。關於複雜性,我完全不同意。 – 2009-11-13 19:40:14