前言
在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"/>
文章评论