软连接说白了就是一个映射。可以映射文件,也可以映射目录。linux和windows都可以做软连接,加入现在把文件A.txt做软连接到B.txt:
linux命令如下:
ln -s A.txt B.txt
windows命令如下:
mklink B.txt A.txt
建立软连接的目的是隔离tomcat里目录或文件,主要是隔离webapps里的项目或者静态资源文件,以实现部署和维护的方便。在tomcat里context.xml文件里设置allowLinking="true"就可以打开软连接,根据tomcat版本不同有不同的设置:
tomcat567版本:
<Context allowLinking="true" />
tomcat89版本:
<Context>
<Resources allowLinking="true" />
</Context>
根据context.xml文件的不同位置又有3种设置方法:在conf目录下修改context.xml,所有在webapps里的项目都支持软连接;在webapps下项目自己的META-INF里修改context.xml,只有该项目自己支持软连接;在conf\Catalina\主机名下修改项目名.xml,同样只有该项目自己支持软连接。
针对上面第一种设置方法举个例子,我在Eclipse配置了一个tomcat9的Server,里面的项目叫Struts2,我要对静态资源文件index.jsp做软连接到F盘:
我第一步就是修改eclipse里面的context.xml,直接在eclipse打开加入<Resources allowLinking="true" />这一行即可:
然后我要去workspace里Struts2项目里把index.jsp文件移动到F盘根目录并改名了hello.jsp,在cmd命令行里执行:
mklink index.jsp F:\hello.jsp
最后在eclipse启动tomcat,我们本来是访问index.jsp的,现在其实是去F盘访问了hello.jsp:
再针对上面第三种设置方法举个例子,现在我想把安装在D盘的tomcat8自带的examples项目软连接到F盘的test目录中:
1、复制D:\wulinfeng\tomcat\apache-tomcat-8.5.13\webapps\examples到F盘根目录,改名为test,删除D盘examples目录:
2、在D:\wulinfeng\tomcat\apache-tomcat-8.5.13\webapps下建立到F:\test的软连接examples:
D:\wulinfeng\tomcat\apache-tomcat-8.5.13\webapps>mklink examples F:\test
为 examples <<===>> F:\test 创建的符号链接
3、在D:\wulinfeng\tomcat\apache-tomcat-8.5.13\conf\Catalina\localhost下新建examples.xml,examples.xml内容为:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resources allowLinking="true" />
</Context>
4、在D:\wulinfeng\tomcat\apache-tomcat-8.5.13\bin下执行startup.bat,启动tomcat
D:\wulinfeng\tomcat\apache-tomcat-8.5.13\bin>.\startup.bat
Using CATALINA_BASE: "D:\wulinfeng\tomcat\apache-tomcat-8.5.13"
Using CATALINA_HOME: "D:\wulinfeng\tomcat\apache-tomcat-8.5.13"
Using CATALINA_TMPDIR: "D:\wulinfeng\tomcat\apache-tomcat-8.5.13\temp"
Using JRE_HOME: "D:\Program Files\Java\jdk1.8.0_101"
Using CLASSPATH: "D:\wulinfeng\tomcat\apache-tomcat-8.5.13\bin\bootstrap.j
ar;D:\wulinfeng\tomcat\apache-tomcat-8.5.13\bin\tomcat-juli.jar"
5、在浏览器请求localhost:8080/examples