2
我使用的org.apache.commons.configuration.CombinedConfiguration
包含兩個org.apache.commons.configuration.XMLConfiguration
實例。一個用作默認配置,並使用我的JAR進行部署,另一個用戶配置可以覆蓋默認值。Apache Commons配置:啓用自動保存的重複條目
下面是一些代碼,加載實例:
XMLConfiguration defaultConfig = new XMLConfiguration(defaultConfigFileURL);
XMLConfiguration userConfig = new XMLConfiguration(extConfigFilePath);
userConfig.setAutoSave(AUTO_SAVE);
FileChangedReloadingStrategy strategy = new FileChangedReloadingStrategy();
strategy.setRefreshDelay(FILE_REFRESH_RATE);
userConfig.setReloadingStrategy(strategy);
userConfig.setExpressionEngine(new XPathExpressionEngine());
defaultConfig.setExpressionEngine(new XPathExpressionEngine());
this.config = new CombinedConfiguration();
this.config.setExpressionEngine(new XPathExpressionEngine());
OverrideCombiner oc = new OverrideCombiner();
this.config.setNodeCombiner(oc);
this.config.setThrowExceptionOnMissing(true);
this.config.addConfiguration(userConfig, "USER");
this.config.addConfiguration(defaultConfig, "DEFAULT");
隨着AUTO_SAVE = true
的userConfig
實例會自動將更改保存到這是工作,到目前爲止該文件。我的問題是,它增加了paramters多次這樣的配置文件看上去混亂:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<fst_configuration>
<parameters>
<WS_PASS_TO_SAP>true</WS_PASS_TO_SAP>
<PATH_CESA_DIR>C:\FST-RELEASE\FST\build\web\WEB-INF\cesa</PATH_CESA_DIR>
<PATH_ERIC_WORK_DIR>C:\FST-RELEASE\FST\build\web\WEB-INF\eric</PATH_ERIC_WORK_DIR>
<PATH_HSQL_DB>C:\FST-RELEASE\FST\build\web\WEB-INF\db</PATH_HSQL_DB>
<PATH_HSQL_DB>C:\FST-RELEASE\FST\build\web\WEB-INF\db</PATH_HSQL_DB>
<CESA_CMD_VERSION>17566520</CESA_CMD_VERSION>
<PATH_HSQL_DB>C:\FST-RELEASE\FST\build\web\WEB-INF\db</PATH_HSQL_DB>
<CESA_CMD_VERSION>17566520</CESA_CMD_VERSION>
</parameters>
(...)
例如,我改變參數PATH_HSQL_DB
在啓動時。 3次啓動後,參數將被分配到userConfig
的文件中存儲3次。
這是增加了一個參數設置爲userConfig
實例代碼:
(...) // value is a String
String name = "PATH_HSQL_DB";
String keyString = String.format("/parameters/%s", name);
userConfig.addProperty(keyString, value);
我能做些什麼來防止這種情況?
您可以加入其中插入PATH_HSQL_DB鍵/值的代碼? –
我加了上面的代碼... –
你有沒有解決過這個問題?我現在有同樣的問題。 – Holloway