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

配置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");
	}
}



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 当你使用Java的System.setProperty()方法来设置系统属性时,可能会出现无效的情况。这可能是因为你没有使用正确的参数或者因为你的代码没有足够的权限来设置系统属性。 要确保你使用正确的参数,你需要提供一个有效的属性名称和一个属性值。例如,如果你想设置一个名为“myproperty”的属性,你需要使用以下代码: ``` System.setProperty("myproperty", "myvalue"); ``` 此外,你还需要确保你的代码拥有足够的权限来设置系统属性。如果你的代码没有足够的权限,那么它将无法成功设置系统属性。你可以尝试以管理员身份运行你的代码,或者尝试更改你的代码以便使用合适的权限来设置系统属性。 最后,你还需要注意,在一些特殊的情况下,一些系统属性可能无法被修改,因此你需要了解你要设置的系统属性的具体限制。 ### 回答2: 当使用system.setProperty方法设置系统属性时,有几种可能会导致设置无效。 第一种可能是没有正确的使用方法。system.setProperty方法的正确使用方式是提供属性的名称和属性的值作为参数,并确保属性的名称和属性的值都符合要求。如果参数不正确,例如属性名称拼写错误或属性值类型不匹配,那么设置将会无效。 第二种可能是在设置属性之前已经有其他代码或配置文件改变了属性的值。系统属性的值是全局共享的,可能会被其他代码或配置文件修改。如果其他代码在设置属性之后立即修改了属性的值,那么之前设置的值就会被覆盖,导致设置无效。 第三种可能是应用程序没有足够的权限来设置系统属性。某些系统属性可能需要更高的权限来进行设置,特别是涉及到系统级别的属性。如果应用程序没有足够的权限,那么它将无法成功设置系统属性。 无论是哪种情况导致了设置无效,可以通过检查代码的正确性,确保没有其他地方修改了属性的值,并确保应用程序具有足够的权限来解决问题。如果问题仍然存在,可以尝试使用其他方法来实现相同的目标,或者在相关的文档和论坛查找解决方案。 ### 回答3: system.setproperty方法用于设置系统属性,但是要注意以下几点,否则可能导致设置无效。 首先,要确保在调用setproperty方法之前,已经正确地获取了系统属性的访问权限。有些系统属性可能需要管理员权限或者特定的许可才能进行更改。因此,在无法获得权限的情况下,调用setproperty方法会被忽略,设置无效。 其次,要确保设置的属性名称存在且正确。有些属性名称是固定的,比如java.version、os.name等,这些属性一般都是系统预设的。而对于自定义的属性名称,必须先通过getProperty方法查询是否存在,如果属性名称错误或者不存在,调用setproperty方法就会设置失败。 另外,要确保在设置属性值时,遵循了正确的数据类型。系统属性的值一般是字符串形式,如果要设置其他数据类型(比如整数、布尔型),需要先进行类型转换。如果设置的属性值不符合指定的数据类型,调用setproperty方法会失败,设置无效。 最后,一些操作系统可能对某些特定的系统属性有限制,比如只读属性或者不允许更改的属性。这些属性一般是系统的核心配置,禁止随意更改。如果尝试通过setproperty方法设置这些受限制的属性,将会被系统忽略,设置无效。 综上所述,如果system.setproperty方法设置无效,需要检查访问权限、属性名称、属性值的数据类型和是否为受限制的属性等方面的问题,进行排查并进行相应的调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

day walker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值