zoukankan      html  css  js  c++  java
  • Weblogic部署web项目获取项目根目录为null

    写在前面

    图片上传功能, web项目部署在本地Tomcat上并没有问题, 但是打成war包部署到Linux服务器Weblogic下却出现如题问题, 导致图片上传失败.

    问题代码

    String realPath = uploadFile.getMultipartRequest().getSession().getServletContext().getRealPath("/") + "/" + path;// 文件的硬盘真实路径

    在Windows下部署到Tomcat没有问题, 项目打成war包后部署到Weblogic获取不到项目根目录.

    解决方案

    通过获取class文件所在路径, 然后对该路径进行处理.

    String rootPath = this.getClass().getResource("/").getPath().replaceAll("^\/", "");// 获取到的这个路径包含/WEB-INF/classes

    结果日志

    home/weblogic/Oracle/Middleware/user_projects/domains/base_domain/servers/3/tmp/_WL_user/cqyyt/i9yd39/war/WEB-INF/classes/

    home前面并没有"/", 而且还包含"/WEB-INF/classes/"这样的路径也不是想要的结果.

    最终修改

    将获取到的路径前加"/", 同时把"/WEB-INF/classes"截取掉.

    String rootPath = this.getClass().getResource("/").getPath().replaceAll("^\/", "");// cnblogs
    rootPath = StringUtils.substringBeforeLast(rootPath,"/WEB-INF/classes");
    logger.info("==============uploadFile 测试获取项目根目录 rootPath: "+rootPath);
    String realPath = "/" + rootPath + "/" + path;// 文件的硬盘真实路径

    到服务器上找, 发现部署后的war包解压到了路径下(也就是最终想要的路径rootPath):

    /home/weblogic/Oracle/Middleware/user_projects/domains/base_domain/servers/3/tmp/_WL_user/cqyyt/i9yd39/war

    结果日志

    效果图

     不明白的地方

    奇怪的是这样写并不影响Tomcat部署, 本来还在想这样在路径前加"/"会影响Windows下Tomcat部署项目图片上传, 结果:

    第二条数据的照片是本地测试结果, 发现虽然文件保存全路径前有"/"但是并不影响图片的上传?

    小结

    说到底还是获取路径的问题,对已获取的路径“改造”是一个思路.

    感谢

  • 相关阅读:
    zznuoj 2173 春天的英雄梦
    zznuoj 2171: 春天的致富梦
    zznuoj 2169: 春天的打水梦
    zznuoj 2168 大家好 我是水题
    西安赛打铁队检讨书
    B-number HDU
    Bomb HDU
    CodeForces
    1140
    Frequent Subsets Problem
  • 原文地址:https://www.cnblogs.com/yadongliang/p/11369155.html
Copyright © 2011-2022 走看看