在实践当中利用ClassLoader.getSystemClassLoader().getResource()来读取配置文件时,单元测试时ok,
但把项目部署到jboss-4.2.1.GA服务器后,却莫明奇妙的发现初始化配置异常null. 反复琢磨后才发现原因是:
Eclipse单元测试时ClassLoader.是Eclipse的,而部署后ClassLoader.则是jboss-4.2.1.GA服务器的,部署的项目只是内部级的,配置文件不是公共环境类路径。
具体解决方案源码:
packagecom.web.common.utility.configs;

importjava.io.FileInputStream;
importjava.io.Serializable;
importjava.net.URL;
importjava.util.Properties;

importorg.apache.log4j.Logger;


/***//**
*@comany阿斯达克(上海)深圳分公司
*@authorsteven.wu
*@date2008-4-28
*@description读取配置文件
*/

publicclassCacheEngineConfigimplementsSerializable...{
privatestaticfinalLoggerlog=Logger.getLogger(CacheEngineConfig.class);
privatestaticPropertiesprop;

static...{
FileInputStreamfis=null;

try...{
URLconfigURL=newCacheEngineConfig().getClass().getClassLoader().getResource("com/web/common/utility/configs/webconfig.properties");
fis=newFileInputStream(configURL.getFile());
prop=newProperties();
prop.load(fis);
log.info("读取配置文件成功.");

}catch(Exceptione)...{
log.info("读取配置文件异常:"+e.getMessage());

}finally...{

try...{

if(fis!=null)...{
fis.close();
}

}catch(java.io.IOExceptionioe)...{
log.info("关闭配置文件(webconfig.properties)有误:"+ioe.getMessage());
ioe.printStackTrace();
}
}
}

publicstaticPropertiesgetProp()...{
returnprop;
}

publicstaticvoidsetProp(Propertiesprop)...{
CacheEngineConfig.prop=prop;
}
}
但把项目部署到jboss-4.2.1.GA服务器后,却莫明奇妙的发现初始化配置异常null. 反复琢磨后才发现原因是:
Eclipse单元测试时ClassLoader.是Eclipse的,而部署后ClassLoader.则是jboss-4.2.1.GA服务器的,部署的项目只是内部级的,配置文件不是公共环境类路径。
具体解决方案源码:
packagecom.web.common.utility.configs;
importjava.io.FileInputStream;
importjava.io.Serializable;
importjava.net.URL;
importjava.util.Properties;
importorg.apache.log4j.Logger;

/***//**
*@comany阿斯达克(上海)深圳分公司
*@authorsteven.wu
*@date2008-4-28
*@description读取配置文件
*/
publicclassCacheEngineConfigimplementsSerializable...{
privatestaticfinalLoggerlog=Logger.getLogger(CacheEngineConfig.class);
privatestaticPropertiesprop;
static...{
FileInputStreamfis=null;
try...{
URLconfigURL=newCacheEngineConfig().getClass().getClassLoader().getResource("com/web/common/utility/configs/webconfig.properties");
fis=newFileInputStream(configURL.getFile());
prop=newProperties();
prop.load(fis);
log.info("读取配置文件成功.");
}catch(Exceptione)...{
log.info("读取配置文件异常:"+e.getMessage());
}finally...{
try...{
if(fis!=null)...{
fis.close();
}
}catch(java.io.IOExceptionioe)...{
log.info("关闭配置文件(webconfig.properties)有误:"+ioe.getMessage());
ioe.printStackTrace();
}
}
}
publicstaticPropertiesgetProp()...{
returnprop;
}
publicstaticvoidsetProp(Propertiesprop)...{
CacheEngineConfig.prop=prop;
}
}
本文解决了一个配置文件在不同环境中加载失败的问题。详细介绍了如何通过调整类加载器的使用方式来确保配置文件无论是在Eclipse还是JBoss服务器环境下都能正确加载。
379

被折叠的 条评论
为什么被折叠?



