在笔者的上一篇文章介绍过怎么通过linux的软连接在不修改上传代码的情况下,将上传到项目路径下的图片改为上传到项目外面,防止重新部署后图片被删除了。同时还可以直接通过类似访问静态资源的方式访问图片。但是,笔者发现一个问题;如果运维人员在重新部署后忘记做软连接,那么图片就上传到项目路径下了。如果再重新部署,这部分图片就丢失,这就是一个bug。
    为了解决这个文件丢失问题,我们将图片上传到一个项目外面的绝对路径,这样就不会在忘记做软连接的时候丢失了。对于怎么访问这个文件呢,还是和上一篇文章一样,做个软连接就可以。
    下面通过一个案例来解释下

一、实战案例

(1)上传代码
        这个上传没啥说的,只不过是要上传到一个绝对路径下面。比如我们原来是上传到项目的/images/packing/下;
    现在我们在tomcat外面建一个文件夹,如:/home/tomtop1927/test/  这样这个test就相当于我们的原来项目根目录了。在我们上传完之后,图片的真实地址类似于:/home/tomtop1927/test/images/packing/100_abc.jpg 。    
        
        其实这个绝对地址是不应该写死的,最好是通过properties去读取最好。对于上传的代码就不介绍了。
(2)建立软连接
        注意:现在test文件夹下面没有imges这个文件夹,可以先自己手动建立一个,然后再进入我们项目路径建立软连接。

        其实这个建立软连接和上一篇文章是一样的,没什么区别,之所以介绍就是这步比较重要。
(3)tomcat配置开启软连接
           怎么开启不介绍,见上一篇文章。笔者用的tomcat8,所以con/context.xml配置<Resources allowLinking="true"/>
(4)完成
        通过上面的3步就完成了,我们把图片上传到了项目外面的一个绝对路径上,这样假设运维人员忘记配置软连接,上传也不受影响。就是访问这文件的时候受影响,当访问不了的时候,运维人员配置个软连接就ok了。总之保证了文件不丢失。

二、对比

        这里的对比是和我上一篇博客介绍的软连接的对比
    (1)上一篇博客中上传代码是完全就和上传到项目根目录下的代码一样。而本次上传的代码需要把图片存的位置的真实的绝对路径给写到代码中。
    (2)除了上面说的代码不一样外,其他操作均一样。
    (3)本篇博客介绍的这方案的优点是:上传永远不会出问题,即使忘记软连接,也还是上传到放文件的地方。
         缺点是:这个绝对路径得写到代码里,虽然可以通过配置properties的方式来解耦,但是变更路径时需要运维人员去修改。
 

 

 



linux下使用软连接之案例二的更多相关文章

  1. linux下Oracle11g RAC搭建(二)

    linux下Oracle11g RAC搭建(二) 一.安装前配置 网络的配置 IP占用測试 进入windows下.运行cmd,使用ping命令验证网段是否被占用. 注:用哪个网段都行,一定保证不要被其 ...

  2. linux下oracle11G DG搭建(二):环绕主库搭建操作

    linux下oracle11G DG搭建(二):环绕主库搭建操作 环境 名称 主库 备库 主机名 bjsrv shsrv 软件版本号 RedHat Enterprise5.5.Oracle 11g 1 ...

  3. linux下通过软连接实现访问项目路径外面的资源

            在javaweb项目开发中,图片上传是个比较常见的场景.一般都是在项目路径下建个文件夹,然后上传到该文件夹下:这样这个图片就可以和静态资源一样被直接访问.这样的好处就是访问这图片特别方 ...

  4. Linux下的软连接和硬链接

    由于教学上的原因,需要下载Android源码,后来使用repo时,系统提示需要python2,我的系统中是两个都有的,但是默认是python3,无法下载,通过创建了个链接搞定,下面就来说说linux下 ...

  5. LInux下桥接模式详解二

    上篇文章导入博客园的比较早,而这篇自己在写的时候才发现内部复杂的很,以至于没能按时完成,造成两篇文章的间隔时间有点长! 话不多说,言归正传! 前面的文章介绍了桥接模式下的基础理论知识,其实本节想结合L ...

  6. Linux SendMail发送邮件失败诊断案例(二)

    Linux上Sendmail经常由于一些配置问题,导致邮件发送失败,下面整理.收集了一些邮件发送失败.异常的案例. 案例1:在新服务器上测试sendmail发送邮件时,发现邮件发送不成功,检查/var ...

  7. Linux下的Backlight子系统(二)【转】

    转自:http://blog.csdn.net/weiqing1981127/article/details/8515847 版权所有,转载必须说明转自 http://my.csdn.net/weiq ...

  8. Linux下文件误删除恢复案例

    说明:将/etc/profile文件删除,然后恢复 在linux中为什么讲文件删除还能恢复呢? 详见:文件删除原理 http://blog.csdn.net/grantlee1988/article/ ...

  9. Linux下Nginx的安装(二)

    一.安装Nginx ## 安装前准备 ## #GNU编译器集合 #Nginx编译需要PCRE #在Nginx的各种模块中需要使用gzip压缩 #在Nginx中,如果服务器提供安全网页时则会用到Open ...

随机推荐

  1. Linux CentOS下Python+robot framework环境搭建

    Linux CentOS下Python+robot framework环境搭建   by:授客 QQ:1033553122 操作系统环境:CentOS 6.5-x86_64 下载地址:http://w ...

  2. 在 Azure VM 中使用应用商店映像创建 HPC Pack 群集的头节点

    使用 Azure 应用商店和 Azure 门户中的 Microsoft HPC Pack 2012 R2 虚拟机映像创建 HPC 群集的头节点. 此 HPC Pack VM 映像基于预安装了 HPC ...

  3. 简单了解Tomcat与OSGi的类加载器架构

    前言: 本次博客主要是对Tomcat与OSGi的类加载器架构,所以就需要对tomcat.OSGi以及类加载机制有所了解 类加载可以在http://www.cnblogs.com/ghoster/p/7 ...

  4. Jboss 4.2.3配置与优化

    1      Jboss内存优化 修改这个两参数,给jvm分配适当的内存,一般为服务器的3/4内存量,推荐至少使用4G内存. 另外添加两个参数 -XX:+UseParallelGC -XX:+UseP ...

  5. 转:C#综合揭秘——细说多线程(上)

    原文地址:http://www.cnblogs.com/leslies2/archive/2012/02/07/2310495.html 引言 本文主要从线程的基础用法,CLR线程池当中工作者线程与I ...

  6. SqlServer中sqlmaint 实用工具和xp_sqlmaint扩展过程

    sqlmaint 实用工具可以对一个或多个数据库执行一组指定的维护操作.使用 sqlmaint,可以运行 DBCC 检查.备份数据库及其事务日志.更新统计以及重建索引.所有数据库维护活动都会生成报表, ...

  7. Huawei vlan 配置及vlan 间通讯

    Huawei Vlan配置及vlan 间通讯实例 组网需求:汇聚层交换机做为 PC 电脑的网关, PC3直连 SW2 属于 vlan 2,网关为 vlanif 2 接口地址192.168.2.1/24 ...

  8. python基础学习19----socket网络编程

    网络通信三要素 ip地址:InetAddress 网络中设备的标识,不易记忆,可用主机名(计算机的标识号) 端口号:用于标识进程的逻辑地址,不同进程的标识(正在运行的软件的标识号) 传输协议:通讯的规 ...

  9. CentOS7 配置静态 ip

    1. 为 CentOS7 配置静态 ip 1.1 修改文件/etc/sysconfig/network-scripts/ifcfg-ens33 sudo vi /etc/sysconfig/netwo ...

  10. 第二次项目冲刺(Beta版本)2017/12/8

    一.任务分布 二.燃尽图 三.站立式会议 1.照片(就要传了) 2.任务安排 四.总结 这次吸收了上次的教训,将任务进行更加详细的分布,分工更加明确,果然效率就高多了,哈哈哈.