在linux下配置tomcat的虛擬路徑
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="demo-mvc"/> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host>
遇到的問題,上面的配置會讓定時器執行兩次,其實是Host這個配置載入了webapps下所有的目錄 而Contextpath又載入了demo-mvc
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="false"> <Context path="" docBase="demo-mvc"/> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host>
上面這個配置會在啟動的時候解壓demo-mvc.war包,但是第二次啟動的時候依然會出現執行demo-mvc兩次的問題。
如果刪除demo-mvc保留demo-mvc.war的話會啟動的時候虛擬路徑無效,遠端釋出正常
如果刪除demo-mvc.war保留demo-mvc的話會啟動的時候啟動兩個demo-mvc的例項,遠端釋出會覆蓋/demo-mvc而不會覆蓋/
因為提倡tomcat只作為app容器且只有一個app例項 因此最後使用nginx來做這個事兒
最後的折中方法<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="/Users/bao/data/workspace/mvc-demo/target/mvc-demo"/> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host>
每次mvn clean package後 重啟Tomcat
2016年4月25日21:35:49
linux上的例子
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="false" xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="haizhan"/>
</Host>
這樣的話,webapps就是部署路徑,而haizhan就是裡邊的一個工程,是指向
注意不能寫成appBase="webapps/haizhan"而docBase不寫 那樣應該應該在webapps下有個ROOT才可以 訪問
我喜歡將war檔案放在tomcat下的webapps路徑下然後,配置成自動部署和虛擬路徑
虛擬路徑在linux下的例子
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="xianjian"/>
<Valve className="org.apache.catalina.valves.FastCommonAccessLogValve" directory="logs"
prefix="access." suffix=".log" pattern="common" resolveHosts="false"/>
在tomcat的webapps檔名下,放入xianjian.war會總動解壓成xianjian工程,而且這樣就可以直接訪問ip:埠/ 而不用再字尾工程名了
虛擬路徑在window下 的例子和詳細解釋
</Host>
<Host name="www.bao.cn" appBase="c:\deng"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="c:\deng"/>
</Host>
解釋:
</Host><Host name="www.deng.cn" ------------------虛擬主機名 appBase="c:\deng"------------------------虛擬主機的目錄這裡,這個資料夾裡有web應用程式。
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" -----------------------配web應用,由於什麼也沒寫,所以是預設的web應用 docBase="c:\deng"/>-----------------指向
</Host>