`
steven_cheng
  • 浏览: 27653 次
  • 来自: 北京
社区版块
存档分类
最新评论

用apache的configuration实现实时配置

    博客分类:
  • java
阅读更多
apache下commons有一个configeration包,对于做配置很方便,尤其是实时热配置。可以自动监测到配置文件的更改而reload配置文件。在项目中使用所以进行了一下封装。

java 代码
  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. }  
分享到:
评论

相关推荐

    apache-commons源码及jar文件

    Apache Commons是一个非常有用的工具包,解决各种实际的通用问题。(附件中提供了该工具包的jar包,及源文件以供研究) BeanUtils Commons-BeanUtils 提供对 Java 反射和自省API的包装 Betwixt Betwixt提供将 ...

    log4j-configuration-builder:没有`log4j.xml`的Apache Log4j2配置生成器

    无需使用log4j.xml文件进行配置 简化准备 Apache Log4j 日志上下文所需的 API 调用链 通过实现 Apache Log4j 2 API。 例子 具有 DEBUG 级别的控制台上的配置 ConfigurationBuilder . Builder builder = ...

    gaemeleon:适用于Google AppEngine的Apache的commons-configuration扩展(数据存储区Memcache)

    有4个新的Configuration实现。数据存储区配置首先, 从数据中检索/存储配置值。 默认情况下,它使用数据存储类型“配置”,属性名称是键,属性值是“值”属性。 可以通过使用特定的构造函数来更改种类名称和值属性...

    Jetty中文手册

    配置Apache mod_proxy和Jetty 配置Jetty中的AJP13 在JBoss中配置Jetty Remote Glassfish EJBs from Jetty Jetty and Spring EJB3 (Pitchfork) JBoss EJB3 ObjectWeb EasyBeans (aka JOnAS EJB3Container) 集群技术 ...

    liferay-portlet-icefaces-archetype-6.1.30.zip

    commons-configuration-gae.zip,配置的实现(由apache commons配置库提供),使用google app engine datastore api存储配置参数;配置的实现(由apache commons配置库提供),使用google app engine datastore api...

    spring-jaxws-cxf:如何使用纯 Java 配置将 CXF 与 Spring 集成的简单示例

    该项目展示了如何使用纯 Java 配置将 CXF Apache JAX-WS 实现与 Spring 集成的简单示例。 建造 mvn clean verify 配置 JavaConfiguration或XMLConfiguration可以与CXFServletConfiguration一起单独运行。 此配置...

    hadoop 1.2.1 api 最新chm 伪中文版

    hadoop 1.2 api 伪中文版。支持即时查询,高级查询。方便编码学习。 大数据炙手可热!hadoop是一个大数据分布式系统基础架构,由...虽然Hadoop框架是用JavaTM实现的,但Map/Reduce应用程序则不一定要用 Java来写 。

    tomcat8 + nginx + memcached + cas 实现负载均衡的配置包

    1,tomcat8的配置: 1.1修改tomcat8.x/conf/context.xml的配置如下: <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file ...

    solr-osgi:Solr OSGi服务和Apache Karaf模块

    有一个名为SolrCoreContainerManager的声明性组件,它监视以下各项: ConfigurationAdmin服务中的solr.core或solr.core- 配置PID。 此配置定义了核心配置。 这些属性与CoreAdmin API中可以使用的属性非常相同。 ...

    struts2配置2.5版

    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd"> <result> /result.jsp <result> /login.jsp <!--...

    Simple-Sword-Server:python服务器库和现成的参考实现服务器

    SSS-简单的SWORD服务器 作者:理查德·琼斯(Richard Jones) 介绍 简单剑服务器必须使用: 1 /它是供python服务器... 如果要在Apache下使用web.py部署SSS,则需要将配置对象从CherryPyConfiguration更改为ApacheCo

    最新Hibernate jar 架包(9个)

    dom4j-1.6.1.jar dom4j是一个Java的XML API,类似于jdom, 用来读写XML文件的,这是必须使用的jar包,Hibernate用它来读写配置文件 commons-collections-3.2.jar Apache Commons包中的一个, 包含了一些Apache开发的...

    matlab中存档算法代码-DICE-Configuration-BO4CO:大数据系统的配置优化工具

    大数据应用程序通常使用多种技术(例如,Apache Storm,Hadoop,Spark,Cassandra)开发,每种技术通常具有数十种可配置参数,应对其进行仔细调整以使其达到最佳性能。 BO4CO可帮助大数据系统的最终用户(例如数据...

    Karaf-Microservices

    service-configuration:此演示中的配置捆绑包,用于轻松进行服务配置。 service-shell-command:Karaf shell命令,用于简单的服务测试。 service-proxy:在服务API之上的cxf jaxrs服务代理。 服务功能:一个Karaf...

    springmybatis

    1.Configuration.xml 是 mybatis 用来建立 sessionFactory 用的,里面主要包含了数据库连接相关东西,还有 java 类所对应的别名,比如 <typeAlias alias="User" type="com.yihaomen.mybatis.model.User"/> 这个别名...

    Maven权威指南 很精典的学习教程,比ANT更好用

    约定优于配置(Convention Over Configuration) 1.3. 一个一般的接口 1.4. 基于Maven插件的全局性重用 1.5. 一个“项目”的概念模型 1.6. Maven是Ant的另一种选择么? 1.7. 比较Maven和Ant 1.8. 总结 2. ...

    phabricator-jetbrains-generic-task-server:用于Jetbrains的Phabricator通用任务服务器(PhpStorm,PyCharm等)

    目前, 产品中不支持 ,因此我们使用实现进行了快速攻克。 现在我们可以在PyCharm / PhpStorm中拥有Tasks:在IDE中配置通用任务服务器转到Tools > Tasks & Contexts > Configure Servers然后添加新的Generic服务器...

    Hadoop从入门到上手企业开发

    002 配置虚拟机IP地址和如何使用远程工具SecureCRT 003 Linux 环境下基本命令使用及Linux系统中文件的类型和权限 004 Linux 环境下基本命令讲解二 005 Linux 系统远程FTP工具与桌面工具XManager使用和培养三大能力 ...

    Java秒杀系统方案优化高性能高并发学习实战源代码以及笔记..zip

    学习了自己通过 cookie 实现分布式session, 不使用spring boot默认提供的 知识点 数据库设计 明文密码两次md5处理 JSR303参数校验 + 全局异常处理器 分布式session, 通过cookie完成分布式session功能. 将cookie存放...

    PHP服务保修系统

    巨人在线报修系统是巨人软件公司自主研发的小型应用软件,可以实现报修单的管理,维修情况的登记,维修单的管理,客户评价的管理等.并且提供了丰富的报表功能,让你随时随地了解,工程师的工作效率,客户的满意度等.强大的...

Global site tag (gtag.js) - Google Analytics