[Linux]启用软链接(Symbolic Link)后,tomcat无法读取软连接的问题的解决

2021-02-22 20点热度 0人点赞 0条评论

前言

在Java的Web程序里,需要读取或调用一些文件资源,这些文件资源是和其他应用(可能在其他的服务器上)公用的,这就需要一台公共文件服务器,然后在tomcat的服务器上,把公共资源挂载(mount)过来

关于如何挂载网络位置,详见我之前的博客:https://blog.terrynow.com/2021/01/21/linux-mount-nfs-or-samba/

例如我们把公共资源mount到/mnt/resources上,然后通过软链接(Symbolic Link)(相当于创建快捷方式)到tomcat的应用目录(这里我们不建议直接挂载到tomcat的webapps目录,因为这样不容易管理),比如 ln -s /mnt/resources /opt/tomcat9/webapps/ROOT/resources这时候发现一个问题,我们在Java程序里调用/opt/tomcat9/webapps/ROOT/resources下的文件,都是找不到文件(类似报FileNotFoundException之类的错误)

问题解决

其实默认Tomcat是不允许创建软链接的方式来读写文件的,解决方式很简单

修改Tomcat的conf/context.xml里的Resources,加入allowLinking="true",如下

<Resources antiResourceLocking="false" cachingAllowed="false" allowLinking="true"/>

 

Terry

记录开发运维过程中遇到的坑以及解决方案,干货分享

文章评论

*

code