<< 苹果就像一家大型创业公司,成功产品的关键是小团队 | 首页 | 淘宝网高性能可伸缩架构技术探秘 >>

刷新Reload你的properties配置文件

Apache Commons Configuration是一个操作配置文件的工具包,它也支持动态的刷新重载Reload配置文件,包括xml和property文件。通过FileChangedReloadingStrategy刷新策略来支持动态的重载属性配置文件。

  1. public class DefaultRealTimeXMLConfiger {   
  2.        
  3.     private static Log logger = LogFactory.getLog(DefaultRealTimeXMLConfiger.class);   
  4.        
  5.     private String fileName;   
  6.        
  7.     private long reloadPeriod;   
  8.        
  9.     private XMLConfiguration config;   
  10.        
  11.     public void init()   
  12.     {   
  13.         String filePath = GlobalConfigerImpl.getConfDir()+"/"+fileName;   
  14.         logger.debug("will config with XML file["+filePath+"]");   
  15.            
  16.         File file = new File(filePath);   
  17.         if (!file.exists() || !file.isFile()) {   
  18.             logger.error(" can't find file[" + filePath + "]");   
  19.             throw new IllegalArgumentException("config error! can't find file[" + filePath + "]");   
  20.         }   
  21.         this.init(file);   
  22.     }   
  23.        
  24.     public void init(File file) {   
  25.         try {   
  26.             config = new XMLConfiguration(file);   
  27.             FileChangedReloadingStrategy fs = new FileChangedReloadingStrategy();   
  28.             fs.setConfiguration(config);   
  29.                
  30.             if(this.reloadPeriod>0)   
  31.             {   
  32.                 fs.setRefreshDelay(this.reloadPeriod);   
  33.             }   
  34.             config.setReloadingStrategy(fs);   
  35.                
  36.         } catch (ConfigurationException e) {   
  37.             logger.error("error! configer error["+file.getPath()+"]");   
  38.             logger.error(e);   
  39.             e.printStackTrace();   
  40.         }   
  41.     }   
  42.   
  43.     public Object getProperty(String name) {   
  44.         Object s = this.config.getProperty(name);   
  45.         return s;   
  46.     }   
  47.   
  48.     public String getString(String name) {   
  49.         Object s = this.config.getProperty(name);   
  50.         String result = null;   
  51.         if (s != null)   
  52.             result = (String) s;   
  53.   
  54.         return result;   
  55.     }   
  56.   
  57.     public String[] getStringArray(String name) {   
  58.         String[] target = this.config.getStringArray(name);   
  59.            
  60.         return target;   
  61.     }   
  62.        
  63.   
  64.     /**  
  65.      * @return Returns the fileName.  
  66.      */  
  67.     public String getFileName() {   
  68.         return fileName;   
  69.     }   
  70.   
  71.     /**  
  72.      * @param fileName The fileName to set.  
  73.      */  
  74.     public void setFileName(String fileName) {   
  75.         this.fileName = fileName;   
  76.     }   
  77.   
  78.     /**  
  79.      * @return Returns the reloadPeriod.  
  80.      */  
  81.     public long getReloadPeriod() {   
  82.         return reloadPeriod;   
  83.     }   
  84.   
  85.     /**  
  86.      * @param reloadPeriod The reloadPeriod to set.  
  87.      */  
  88.     public void setReloadPeriod(long reloadPeriod) {   
  89.         this.reloadPeriod = reloadPeriod;   
  90.     }   
  91. }  
标签 : ,



发表评论 发送引用通报