tomcat配置中appBase與docBase的優(yōu)先級問題一直是自己難解決的一個(gè)問題了,今天小編終于找到了解決辦法,一起來學(xué)習(xí)一下.
昨天在開發(fā)應(yīng)用的時(shí)候,發(fā)現(xiàn)http://m.survivalescaperooms.com/hospital/list報(bào)出404的錯(cuò)誤,而其它路徑都是對的.
斷點(diǎn)跟蹤的時(shí)候,發(fā)現(xiàn)/hospital/list確實(shí)沒有進(jìn)來,測試了下/hospital/hospital/list可以訪問.
檢查代碼沒任何問題,很是詭異,最后懷疑到tomcat的配置上來,檢查server.xml,發(fā)現(xiàn)也沒有問題,代碼如下:
- <Host name="localhost" appBase="d:\htdocs\"
- unpackWARs="true" autoDeploy="true">
- <Context path="" docBase="hospital"/>
- <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" //Vevb.com
- prefix="localhost_access_log." suffix=".txt"
- pattern="%h %l %u %t "%r" %s %b" />
- </Host>
我的配置是所有web工程都是在d:\htdocs下面,而hospital是其中的一個(gè)web工程.==,好像不對,偏偏路徑是hospital,這里的Context中docBase也是hospital,有沒有什么問題呢?
仔細(xì)分析了下,唯一可能的原因大概是這樣的:
appBase所在的目錄有個(gè)子目錄叫hospital,在tomcat進(jìn)行path解析的時(shí)候,首先分析Host的appBase路徑,找到了hospital,把請求交給這個(gè)路徑下的Servlet來處理.
如果appBase下沒有找到對應(yīng)的path,則使用Context中配置的path做映射,根據(jù)這個(gè)可能性,修改hospital的目錄名稱和docBase配置,問題解決.
由此可見:tomcat對于path的處理,Host中appBase的子目錄會優(yōu)先于Context中的path.
新聞熱點(diǎn)
疑難解答
圖片精選