如何实现动态读取配置文件里面的值呢?

hansbob001 2008-08-21 02:07:58
Hi,
我用dom4j读取xml配置文件中的值到程序中,但是现在配置文件每次改动,都要重启程序,我想实现一个可以动态读取xml配置属性,不用重启程序的小程序?有什么方法吗?

给出你的程序。谢谢


...全文
126 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuyx808 2008-08-22
  • 打赏
  • 举报
回复
这个肯定的,有一些可以,有一些必须重启
youjianbo_han_87 2008-08-22
  • 打赏
  • 举报
回复
j2EE程序,容器一旦加载,修改配置后都要重启服务吧,别的逻辑代码修改没关系,但是配置和POJO,Form等修改后一定要重启服务吧,就算动态读取修改配置文件,服务器也不会读取吧
zhuyx808 2008-08-21
  • 打赏
  • 举报
回复
hi: 这个程序需要你修改下,修改任务交给你了

import java.io.File;
import java.io.FileInputStream;

import java.util.Properties;







public class ReadConfigation{

/**
* 属性文件全名
*/
private static final String PFILE ="Config.properties";
/**
* 对应于属性文件的文件对象变量
*/
private File m_file = null;
/**
* 属性文件的最后修改日期
*/
private long m_lastModifiedTime = 0;
/**
* 属性文件所对应的属性对象变量
*/
private Properties m_props = null;
/**
* 本类可能存在的惟一的一个实例
*/
private static ReadConfigation m_instance =new ReadConfigation();
/**
* 私有的构造子,用以保证外界无法直接实例化
*/
private ReadConfigation()
{
m_file = new File(PFILE);
m_lastModifiedTime = m_file.lastModified();
if(m_lastModifiedTime == 0){
System.err.println(PFILE +" file does not exist!");
}
m_props = new Properties();
try
{
m_props.load(new FileInputStream(PFILE));
}
catch(Exception e)
{
e.printStackTrace();
}
}
/**
* 静态工厂方法
* @return 返还ReadConfigation 类的单一实例
*/
synchronized public static ReadConfigation getInstance()
{
return m_instance;
}
/**
* 读取一特定的属性项
*
* @param name 属性项的项名
* @param defaultVal 属性项的默认值
* @return 属性项的值(如此项存在), 默认值(如此项不存在)
*/
public String getConfigItem(String name,String defaultVal)
{
long newTime = m_file.lastModified();
// 检查属性文件是否被其他程序
// 如果是,重新读取此文件

if(newTime == 0)
{
// 属性文件不存在
if(m_lastModifiedTime == 0){
System.err.println(PFILE+ " file does not exist!");
}else{
System.err.println(PFILE+ " file was deleted!!");
}
return defaultVal;
}else if(newTime > m_lastModifiedTime){
// Get rid of the old properties
m_props.clear();
try
{
m_props.load(new FileInputStream(PFILE));
}catch(Exception e){
e.printStackTrace();
}
}
m_lastModifiedTime = newTime;
String val = m_props.getProperty(name);
if( val == null )
{
return defaultVal;
}
else
{
return val;
}
}
public String getConfigItem(String name){
return getConfigItem(name,"");
}
}

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧