一.背景说明
在项目开发过程中,本地开发用的windows+tomcat,到了生产中,就成了linux+weblogic。部署工程后,应用报错,显示获取应用目录返回为null。
在网上查阅资料,发现在weblogic中,war包部署,就没有应用路径的说法了,所以只能返回null。
二.解决方法
/*
* 获取项目的根目录
* 因为tomcat和weblogic获取的根目录不一致,所以需要此方法
*/
private String getWebRootUrl(HttpServletRequest request){
String fileDirPath = request.getSession().getServletContext().getRealPath("/");
if(fileDirPath == null){
//如果返回为空,则表示服务器为weblogic,则需要使用另外的方法
try{
return request.getSession().getServletContext().getResource("/").getFile();
}catch(MalformedURLException e){
LogUtil.MSG.info("获取项目的根目录出错!", e);
throw new BizException("获取项目的根目录出错!");
}
}else{
return fileDirPath;
}
}
tomcat下输出 E:\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\bqsims_client\
weblogic下输出 /home/weblogic/Oracle/Middleware/Oracle_Home/user_projects/domains/domain7101/servers/AdminServer7101/tmp/_WL_user/bqsims_client/i3sdnr/war/