`

Java进程配置文件Reload

    博客分类:
  • Java
阅读更多

我们在开发Java程序的时候,很多常量信息都存在配置文件中,比如数据库连接信息、ip黑名单,事件的超时时间等等。当需要该这些配置的值时都需要重新启动进程,改动的配置才会生效,有时候线上的应用不能容忍这种停服。

  还好,Apache Common Configuration给我们提供了可以检测文件修改后配置可短时间生效的功能。具体用法如下:

复制代码
package com.netease.test.commons;

import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy;
import org.apache.log4j.Logger;

/**
 * User: hzwangxx
 * Date: 14-3-13
 * Time: 17:20
 */
public class SystemConfig {
    private static Logger logger = Logger.getLogger(SystemConfig.class);

    private static  PropertiesConfiguration config;

    static {
        try {
            //实例化一个PropertiesConfiguration
            config = new PropertiesConfiguration("/Users/hzwangxx/IdeaProjects/app-test/src/main/resources/conf.properties");
            //设置reload策略,这里用当文件被修改之后reload(默认5s中检测一次)
            config.setReloadingStrategy(new FileChangedReloadingStrategy());
        } catch (ConfigurationException e) {
            logger.error("init static block error. ", e);
        }
    }

    public static synchronized String getProperty(String key) {
        return (String) config.getProperty(key);
    }

    public static void main(String[] args) throws InterruptedException {
        for (;;) {
            System.out.println(SystemConfig.getProperty("key"));
            Thread.sleep(2000);
        }
    }

}

/*
output:
value
value
value
2014-03-13 17:54:37,251 12007 [main] INFO  - Reloading configuration. URL is file:/Users/apple/IdeaProjects/app-test/src/main/resources/conf.properties
updateValue
updateValue
 */
复制代码

 

这个比较实用,赞一个,牛刀小试了一把。

本文来源于:http://www.cnblogs.com/nexiyi/p/how_to_reload_properties.html

 

 

目前项目中用到的配置类请见附件,经验证,修改配置properties信息后,无须重启服务,调用类方法获取就可以得到最新的值

分享到:
评论

相关推荐

    linux上通过sh方式启动java jar程序并做为守护进程

    > /path/to/logfile.pid`将Java进程的PID(进程ID)写入到指定的日志文件,这样我们就可以在需要时找到并管理这个进程。 7. 最后的`tail -f`命令用于实时查看应用的日志输出,但这不是必需的,可以根据实际需求决定...

    apache的配置及文件详解

    除了`httpd.conf`,Apache还使用`Includes`指令引入其他配置文件,如`extra/httpd-vhosts.conf`(虚拟主机配置)和`sites-available`目录下的站点配置文件。这样可以保持主配置文件的整洁,并方便管理。 **5. 启动...

    Linux操作下的进程管理利器 Supervise

    在实际应用中,首先需要编译源代码文件(如`.c`或`.java`),然后在Supervisord的配置文件中添加相应的进程配置,指定可执行文件路径、工作目录、环境变量等。配置完成后,通过`supervisorctl reload`命令使配置生效...

    crontab执行时间与系统时间不一致问题解决

    cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。 cron的配置文件称为“crontab”,是“cron table”的简写。 cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。 ...

    Centos系统里运行java的jar启动脚本

    在Linux系统,特别是CentOS 7这样的服务器环境中,运行Java应用程序通常涉及到打包成JAR文件的程序。本文将深入探讨如何在CentOS 7中创建并执行Java的JAR启动脚本,以及如何配置该脚本使其能在系统开机时自动运行。 ...

    nginx配置.zip

    - **全局块**:这是配置文件的起点,包含服务器的基本设置,如工作进程数、错误日志位置等。 - **events块**:定义Nginx如何处理连接,如最大连接数、多路复用等。 - **http块**:在此块中,你可以定义HTTP服务的...

    Linux一键式安装JDK、Mysql、Redis、Nginx

    配置完成后,启动Nginx,通过`nginx -t`测试配置文件的正确性,然后用`nginx -s reload`重新加载配置。 这些组件的自动化安装通常涉及编写shell脚本,如`init.conf`,它会依次执行各个组件的安装、配置和启动任务,...

    Apollo配置中心客户端使用案例源码

    在源码中,可以看到使用`Apollo.ConfigService.init()`方法来初始化配置服务,这个方法会从指定的配置文件(如`bootstrap.properties`)中读取`metaServer`地址。 2. **获取配置** 客户端提供了`ApolloConfig`类,...

    nginx使用配置.pdf

    - `nginx -s reload`: 改变配置文件时重新加载 Nginx 工作进程 - `nginx -s reopen`: 重新打开日志文件 **4. 启动和关闭** - **启动 Nginx**: 通过双击 `nginx.exe` 启动 - **关闭 Nginx**: 使用任务管理器结束 `...

    catalina.sh

    3. 启动Java进程:通过`exec`命令启动Java虚拟机,传递`Bootstrap`类和相应的参数,如`start`命令会使用`java org.apache.catalina.startup.Bootstrap start`来启动Tomcat服务。 4. 服务运行:`Bootstrap`类会加载...

    达内学习资料.doc

    - `vi /etc/my.cnf`:编辑配置文件。 - `service mysql restart`:重启MySQL服务。 5. **Xshell使用**: - 通过rz命令上传文件到Linux服务器。 这份资料对于初学者来说非常实用,涵盖了IT基础操作的关键点,...

    架构师培训教程 大数据高并发服务器实战 第2.4篇-LNMP部分-Nginx部分-基本配置 共30页.pptx

    例如,配置文件中常见的指令有: - `worker_processes`: 设置Nginx工作进程的数量,影响并发处理能力。 - `error_log`: 定义错误日志文件的位置和级别。 - `pid`: 存储主进程ID的文件路径。 - `listen`: 服务器监听...

    wrapper-windows工具包和操作说明文档

    这个工具包包含了必要的可执行文件和配置文件,用于将Java应用程序转换为Windows服务。解压这个zip文件后,通常会得到如`wrapper.exe`这样的主程序,以及一些配置文件,如`wrapper.conf`,用于定义服务的行为和Java...

    nginx部署手册.pdf

    关键的配置文件包括fastcgi.conf、proxy_conf.conf、reload.sh、testConfig.sh和mime.types,它们分别用于Nginx到应用服务器的代理配置、配置文件检查、Nginx重启、配置文件修改生效以及定义可下载文件类型。...

    Nginx 核心模块与配置实践 (1)1

    `显示帮助,`./nginx`启动服务器,`./nginx -c /path/to/nginx.conf`指定配置文件启动,`nginx -s reload`或`kill -HUP 进程PID>`用于平滑重载配置。 在配置实践中,Nginx的灵活性体现在其模块化设计。它可以根据...

    使用JavaServiceWrapper设置tomcat作为linux服务并且开机自动启动.pdf

    2. **修改配置文件** 对于`/opt/tomcat/bin/tomcat`文件,进行以下修改: ```bash APP_NAME="tomcat" APP_LONG_NAME="Tomcat Application Server" WRAPPER_CMD="./wrapper" WRAPPER_CONF="../conf/wrapper....

    tomcat+nginx的配置

    - 打开Nginx配置文件`/usr/local/nginx/conf/nginx.conf`。 - 在`http`块内添加一个`server`块,用于定义如何处理对Tomcat的请求: ```nginx server { listen 80; server_name localhost; location / { ...

    Electron + React + Node.js + ES6 开发环境全配置好

    2. **设置项目结构:** 分离主进程和渲染进程的代码,配置相应的入口文件。 3. **配置React:** 安装`create-react-app`或手动配置Babel和Webpack,确保ES6语法支持。 4. **热更新:** 可能包含如`react-hot-loader`...

    tomcat相关用法

    - 修改`conf/server.xml`配置文件,配置端口号、上下文路径、虚拟主机等。 - 启动和停止Tomcat服务,通常通过`bin/startup.sh`或`bin/shutdown.sh`脚本。 2. **部署Web应用**: - 将WAR文件放入`webapps`目录下...

Global site tag (gtag.js) - Google Analytics