一.背景說明
在項目開發過程中,本地開發用的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/