谈Java Properties配置文件, 是J2EE容器的命令行绑定, 还是使用Deploy自适应的绑定?
来源:互联网 发布:网络课程培训总结 编辑:程序博客网 时间:2024/06/03 18:28
这里暂且把XML格式放在一边吧,我们来看看Java使用的最多的.properties配置文件...
今天,看到好几个J2EE的应用发布到服务器上的时候,都要在J2EE Container启动的时候,在启动的脚本上面添加启动的参数:
这样一来,每每有新的应用需要发布到J2EE Applicaion Server的时候,又要来修改启动脚本,并作停机和重新启动的动作...给生产带来了很大的不便...
反过来看看目前流行的做法,比如说log4j、hibernate等等都有一个很好的解决办法,就是把对应的配置文件(某个.properties的文档),放在应用的classes目录下,相关的程序会自己去读取...
看了一下,其实就是利用ClassLoader.getSystemResourceAsStream()来实现的,因为对于某一个应用,所有Class的装载,都是由一系列存在父子关系的ClassLoader来完成的...通过上面这个方法,会递归查找所需要的properties文件...作了一个代码如下:
import java.io.InputStream;
import java.util.Properties;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
public class Configure {
private static final Logger logger = LogManager.getLogger(Configure.class);
private String propertiesFileName;
private Properties propertiesTable;
public Configure() {
this.loadPropertiesTable();
}
public Configure(String propertiesFileName) {
this.setPropertiesFileName(propertiesFileName);
this.loadPropertiesTable();
}
public String getPropertiesFileName() {
return this.propertiesFileName;
}
public void setPropertiesFileName(String propertiesFileName) {
this.propertiesFileName = propertiesFileName;
}
private void loadPropertiesTable() {
propertiesTable = new Properties();
if (this.propertiesFileName != null && this.propertiesFileName != "") {
try {
/*
* 2005/11/14, 同事发现了此处存在Bug,只能在Console模式下运行,如果是在Web方式下
* 存在Bug...原因是此处使用了ClassLoader类别读取Resource,丢失了层级关系!
* InputStream in =
* ClassLoader.getSystemResourceAsStream(this.propertiesFileName);
* propertiesTable.load(in);
*/
ClassLoader classLoader = Configure.class.getClassLoader();
URL resUrl = classLoader.getResource(this.propertiesFileName);
/*
* 虽然拿到了URL, 不好用new FileInputStream(URL.toString())来操作,因为在Windows
* 和*NIX上面,对file:///协议的表示是不兼容的。java.net.URL会把Windows上面的文件
* 地址解释为file:/D:/xxx/,这样就错了,正确的应该是file:///D:/xxx !
*
* 所以,既然有了URL对象,就可以直接openStream了!
*/
InputStream in = resUrl.openStream();
propertiesTable.load(in);
}
catch (Exception ex) {
logger.debug(ex.getMessage(), ex);
logger.info("can not load properties file:" + this.propertiesFileName);
}
}
}
public String getProperty(String propertyName) {
return this.propertiesTable.getProperty(propertyName);
}
}
这样,就可以直接修改.properties文件,就可以生效了,不用重开服务器!而且,多个应用之间的配置都是隔离开的,每个配置文件都是随着自己所在的WAR绑定的!对 one AP Server <--> multi Applications 再好不过了!
自己给这个起了个名字,叫做“自适应配置文件读取”!
- 谈Java Properties配置文件, 是J2EE容器的命令行绑定, 还是使用Deploy自适应的绑定?
- 谈Java Properties配置文件, 是J2EE容器的命令行绑定, 还是使用Deploy自适应的绑定?
- 谈Java Properties配置文件, 是J2EE容器的命令行绑定, 还是使用Deploy自适应的绑定?
- 谈Java Properties配置文件, 是J2EE容器的命令行绑定, 还是使用Deploy自适应的绑定?
- java的前期绑定和后期绑定使用示例
- 配置文件properties的使用
- 配置文件的使用 Properties
- 配置文件(.properties)的使用
- properties配置文件的使用
- java的properties配置文件
- Java的properties配置文件
- java中的配置文件(Properties)的使用
- JAVA——配置文件Properties的使用
- java中配置文件.properties的使用
- 方法是动态绑定的,属性是静态绑定的
- java中使用oracle的绑定变量
- 绑定变量的使用
- java的动态绑定与静态绑定
- 写了一个Java读取XML文件的工具类,做一下笔记!
- 今天升级了Firefox,发现华进的Blog不兼容新版的Firefox,待会儿告诉他...
- JSP中早就有了类似.Net DataSet那样的离线数据访问了,抛弃ResultSet,拥抱Result吧!
- 被果树点名做一个Blog游戏,答案如下...接下来换我点名了~~!!!
- 快速建立JSF环境...
- 谈Java Properties配置文件, 是J2EE容器的命令行绑定, 还是使用Deploy自适应的绑定?
- 杂谈:从今天开始,要认认真真的读书了!& 住在十全街的有志青年们!
- 从Blog上面去掉那该死的“狗狗订阅”的logo !
- 写了这么多的东东,终于有一篇上了CSDN的首页了!做个纪念,第50篇!
- IBM MQ Client 错误 "unable to load mqic32.dll " 的解决办法! from Wells !
- 当Tomcat遭遇JBDC Driver,出现 'Cannot create resource instance' !
- 看到一段话,转过来大家看看:“只有最勤劳的人,没有最好的系统!”
- 使用VIM可以直接把语法加亮的Source Code转换为HTML格式的页面!
- [收藏] 封包过滤防火墙ipchains/iptables的学习资料列表!