现在的位置: 首页 > 综合 > 正文

项目中通过system.property共享配置信息

2013年08月31日 ⁄ 综合 ⁄ 共 1953字 ⁄ 字号 评论关闭

配置web.xml

  <!-- 用于加载变量 -->
	  <listener>
	    <listener-class>com.cs2c.bus.listener.LoadSysVariables</listener-class>
	  </listener>

该listener代码:

package com.cs2c.cobra.common.listener;

import java.io.IOException;
import java.util.Properties;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

/**
 * 
 * @author wangz
 * 
 *  用于初始化系统变量,比如各种url等,JAR包中会从SYS中取,因此在此处设置
 *   
 *   2012-05-30
 */
public class LoadSysVariables implements ServletContextListener{

	private static final String SYS_CONFIG_FILE_NAME = "/config.properties";	
	private static final String COBRA_SERVER_URL_NAME= "cobra.server.url";	
	private static final String COBRA_ESBSERVER_URL_NAME= "sys_cobra_esbserver_url";	
	private static final String GLUSTER_ESBSERVER_URL_NAME = "gluster.server.url";
	@Override
	public void contextDestroyed(ServletContextEvent arg0) {
		
	}

	@Override
	public void contextInitialized(ServletContextEvent arg0) {
		Properties props = new Properties();
		try {
			props.load(this.getClass().getResourceAsStream(SYS_CONFIG_FILE_NAME));
		} catch (IOException e) {
			e.printStackTrace();
		}
		System.setProperty(COBRA_ESBSERVER_URL_NAME,props.getProperty(COBRA_ESBSERVER_URL_NAME).toString());
		System.setProperty(GLUSTER_ESBSERVER_URL_NAME,props.getProperty(GLUSTER_ESBSERVER_URL_NAME).toString());
		System.setProperty("sys_cobra_conf_server_url",props.getProperty("sys_cobra_conf_server_url").toString());
	}

}

config.properties文件放在class的根目录下既可。

客户端中是从system里读配置,如果读取到,则按照读取到的值,读取不到则使用默认值,例如:

import java.net.URI;

import javax.ws.rs.core.UriBuilder;

import com.cs2c.cobra.core.constants.CobraRESTConstants;
import com.cs2c.restful.jersey.client.AbstractHttpClient;
import com.cs2c.restful.jersey.utils.ClientConstants;
/**
 * 监控数据的ESB的client
 * @author wz
 *  2012-05-24
 */
public abstract class AbstractCobraEsbClient extends AbstractHttpClient {

	public URI getServerBaseURI() {
		return UriBuilder.fromUri(getBaseURL()).build();
	}

	private String getBaseURL() {
		// remove the platform path (e.g. /linux.gtk.x86_64) from the URL
		return System.getProperty(CobraRESTConstants.RESOURCE_BASE_URL_NAME,
				"http://10.1.83.29:8083");
	}
}

抱歉!评论已关闭.