軟連接說白了就是一個映射。可以映射文件,也可以映射目錄。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