一.背景说明

      在项目开发过程中,本地开发用的windows+tomcat,到了生产中,就成了linux+weblogic。部署工程后,应用报错,显示获取应用目录返回为null。

      在网上查阅资料,发现在weblogic中,war包部署,就没有应用路径的说法了,所以只能返回null。

    二.解决方法

    1. /*
    2. * 获取项目的根目录
    3. * 因为tomcat和weblogic获取的根目录不一致,所以需要此方法
    4. */
    5. private String getWebRootUrl(HttpServletRequest request){
    6. String fileDirPath = request.getSession().getServletContext().getRealPath("/");
    7. if(fileDirPath == null){
    8. //如果返回为空,则表示服务器为weblogic,则需要使用另外的方法
    9. try{
    10. return request.getSession().getServletContext().getResource("/").getFile();
    11. }catch(MalformedURLException e){
    12. LogUtil.MSG.info("获取项目的根目录出错!", e);
    13. throw new BizException("获取项目的根目录出错!");
    14. }
    15. }else{
    16. return fileDirPath;
    17. }
    18. }

    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/