2013-01-20 45 views
1

我有一個DefaultConfigurationBuilder(來自commons-configuration v1.9)。這個對象(名爲config)是由這個非常簡單的文件初始化:Commons-configuration和DefaultConfigurationBuilder不會自動重新加載

<?xml version="1.0" encoding="UTF-8" ?> 

<configuration> 
<system/> 
<properties fileName="webapp-commons.properties" throwExceptionOnMissing="true"> 
    <reloadingStrategy refreshDelay="1000" config-class="org.apache.commons.configuration.reloading.FileChangedReloadingStrategy"/> 
</properties> 

所以要webapp-commons.properties文件的修改必須強制文件的重新加載。但是這不能按預期工作。這裏是我的小測試:

log.debug("Go pour modifier le fichier !"); 
    for (int i=0; i < 10 ; i++) { 
     System.out.println("-- value : "+config.getString("clouderial.business.application.name")); 
     Thread.sleep(3000); 
    } 
    log.debug("Vous auriez du modifier le fichier"); 

值「clouderial.business.application.name」永遠不會改變。

任何幫助woould表示讚賞。

JM。

回答

1

解決方法很簡單:只需添加一個頭到您的配置文件:

<header> 
    <result forceReloadCheck="true"/> 
</header> 

和它的作品。

完整的配置文件現在是:

<?xml version="1.0" encoding="UTF-8" ?> 

<configuration> 
    <header> 
     <result forceReloadCheck="true"/> 
    </header> 
    <system/> 
    <properties fileName="webapp-commons.properties" throwExceptionOnMissing="true"> 
      <reloadingStrategy refreshDelay="1000" config-class="org.apache.commons.configuration.reloading.FileChangedReloadingStrategy"/>  
    </properties> 
</configuration> 
+0

但是,你會看到DefaultConfigurationBuilder不重裝本身(僅嵌入的文件)。這是解釋[https://issues.apache.org/jira/browse/CONFIGURATION-523#comment-13559438]爲什麼。 – jmcollin92