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

import
java.io.FileInputStream;
import
java.io.Serializable;
import
java.net.URL;
import
java.util.Properties;

import
org.apache.log4j.Logger;

/**
* @comany 阿斯达克(上海)深圳分公司
* @author steven.wu
* @date 2008-4-28
* @description 读取配置文件
*/
public
class
CacheEngineConfig
implements
Serializable
{
private static final Logger log = Logger.getLogger(CacheEngineConfig.class);
private static Properties prop;
static{
FileInputStream fis=null;
try{
URL configURL=new CacheEngineConfig().getClass().getClassLoader().getResource("com/web/common/utility/configs/webconfig.properties");
fis=new FileInputStream(configURL.getFile());
prop=new Properties();
prop.load(fis);
log.info("读取配置文件成功.");
}catch(Exception e){
log.info("读取配置文件异常:"+e.getMessage());
}finally{
try {
if( fis!=null) {
fis.close();
}
} catch (java.io.IOException ioe) {
log.info("关闭配置文件(webconfig.properties)有误:" + ioe.getMessage());
ioe.printStackTrace();
}
}
}
public static Properties getProp() {
return prop;
}
public static void setProp(Properties prop) {
CacheEngineConfig.prop = prop;
}
}
但把项目部署到jboss-4.2.1.GA服务器后,却莫明奇妙的发现初始化配置异常null. 反复琢磨后才发现原因是:
Eclipse单元测试时ClassLoader.是Eclipse的,而部署后ClassLoader.则是jboss-4.2.1.GA服务器的,部署的项目只是内部级的,配置文件不是公共环境类路径。
具体解决方案源码:














































