項目部署到服務器上后碰到了定時任務執行2次的問題
原因是一個tomcat配置了多個項目,需要更改tomcat的配置,否則會導致項目重復部署,從而導致定時任務執行多次
tomcat部署server.xml詳解
轉https://blog.csdn.net/wuqilianga/article/details/79153463
終於搞懂了TOMCAT/config/server.xml里關於HOST和Context的問題了!!!!!
起因是因為quartz定時器總是被執行2次,還是同一個線程,查了半天說是加載了兩次,雖然改了下是成功了,但是還是有點不明所以!
吃完午飯,無意中,把這個問題整明白了點!
直接上例子:
1.只有Host沒有Context
那么會部署tomcat/webapp下的所有項目(或者說文件夾:ROOT,PLAYER,項目1,項目2...)
會直接帶上文件夾名字作為屬性,
特別提示ROOT的優先級高,會省去ROOT這個名字
即:
localhost:8080/項目1/...
localhost:8080/項目2/...
localhost:8080/(ROOT)xxx
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="false" deployOnStartup="false"></Host>
2.指定了一個Context,path=""
那么會將appBase與path拼接, docBase是你文件夾的名字,path是你的訪問路徑
這里path="" 那么訪問路徑就是 ...(webapps)/方法...(localhost:8080/add)
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="false" deployOnStartup="false">
<Context path="" docBase="aaa" debug="0" reloadable="true"/>
</Host>
3.指定了一個Context,path="xxx"
appBase+path拼接, docBase是你文件夾的名字,path是你的訪問路徑
這里path="xxx" 那么訪問路徑就是 ...(webapps)/xxx/方法...(localhost:8080/xxxx/add)
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="false" deployOnStartup="false">
<Context path="" docBase="book" debug="0" reloadable="true"/>
</Host>
4.指定了多個Context,那就必須都配上path
有多個context,就要配上多個path,這樣才能根據不同的項目走不通的路徑
也就是說
testa文件夾走的是localhost:8080/aaa/...
testb文件夾走的是localost:8080/bbb/...
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="false" deployOnStartup="false">
<Context path="aaa" docBase="testa" debug="0" reloadable="true"/>
<Context path="bbb" docBase="testb" debug="0" reloadable="true"/>
</Host>
注:
autoDeploy="false" deployOnStartup="false"這兩個選項都為true的時候(一般默認autoDeploy為true)
這時候會自動加載/部署
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="ture" >
<Context path="" docBase="aaa" debug="0" reloadable="true"/>
</Host>
我之前就是這樣子配置,所以走了2遍
第一遍:webapp下所有的文件夾部署(雖然我只有一個aaa文件夾)(localhost:8080/aaa/add...)
第二遍:指定aaa文件夾又走了一遍,且path為空(localhost:8080/add...)
這兩個域名都能走!!!
==================================
博主:http://blog.csdn.net/jibaole/article/details/52765249
Tomcat中給server.xml加入<Context>元素
<Context>代表了運行在<Host>上的單個Web應用,一個<Host>可以有多個< Context>元素,每個Web應用必須有唯一的URL路徑,這個URL路徑在<Context>中的屬性
path中設定。<Context>元素的屬性:
path:指定訪問該Web應用的URL入口,如:http://127.0.0.1:8080/helloApp1。
docBase:指定Web應用的文件路徑,可以給定絕對路徑,也可以給定相對於<Host>的appBase屬性的相對路徑,如果Web應用采用開放目錄結構,則指定Web應用的根目錄,如果Web應用是個war文件,則指定war文件的路徑。
reloadable:如果這個屬性設為true,tomcat服務器在運行狀態下會監視在WEB-INF/classes和WEB-INF/lib目錄下class文件的改動,如果監測到有class文件被更新的,服務器會自動重新加載Web應用。
在開發階段將reloadable屬性設為true,有助於調試servlet和其它的class文件,但這樣用加重服務器運行負荷,建議在Web應用的發布階段將reloadable設為false。
---------------------
