您好,登錄后才能下訂單哦!
之前公司申請了五個域名,因為前期只有一個項目,所以老板要求多個域名對應到一個項目上,于是,我就在tomcat的web.xml上配置了多個host如下:
<Host name="www.XXX.com" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/XXXWebsite" debug="0" reloadable="true" />
<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 name="www.XXX1.com" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/XXXWebsite" debug="0" reloadable="true" />
<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 name="www.XXXX.cn" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/XXXWebsite" debug="0" reloadable="true" />
<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 name="www.XXXX.net" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/XXXWebsite" debug="0" reloadable="true" />
<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 name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
這樣寫了。
然后大概過了幾個月,公司業務的增長,項目也多了,后來其中有個項目就是關于微信開發的,需要從微信端拿accessToken,項目的web.xml 配置了一個init的servlet,本來每次init一次,從微信端拿得accessToken,是正常的,但是部署到服務器之后,一直有問題,后來研究了很久,在 項目中也寫了很多log,到后面,才發現,是因為init這個servler 被執行了很多次導致的。沒執行一次拿到一個accessToken,然后之前訪問拿到的accessToken,跟最后一次項目的accessToken不匹配,導致了問題出現。
后來才知道,是因為前面配了5個host才導致這樣的問題的,因為當時對tomcat的web.xml配置不是很熟悉,后來網上搜了一堆,很巧合的發現了篇博客寫的,其實多個域名對應一個項目的話,可以使用web.xml 里面的一個標簽,<Alias>www.XXX.com</Alias>
標簽。
于是上面的配置就變成如下:
<Host
name="www.XXX.com" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/XXXWebsite"
debug="0" reloadable="true" />
<Alias>www.XXX1.com</Alias>
<Alias>www.XXXX.cn</Alias>
<Alias>www.XXXX.net</Alias>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log."
suffix=".txt"
pattern="%h
%l %u %t "%r" %s %b" />
</Host>
并且將引擎的<Engine></Engine> defaultHost="www.XXX.com">, 因為一個Engine 必須有一個host 跟 它的名字一樣,
這樣配置完之后,我們再去看log,此時只init方法只執行了一次。成功解決了問題。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。