您好,登錄后才能下訂單哦!
之前公司申請(qǐng)了五個(gè)域名,因?yàn)榍捌谥挥幸粋€(gè)項(xiàng)目,所以老板要求多個(gè)域名對(duì)應(yīng)到一個(gè)項(xiàng)目上,于是,我就在tomcat的web.xml上配置了多個(gè)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>
這樣寫(xiě)了。
然后大概過(guò)了幾個(gè)月,公司業(yè)務(wù)的增長(zhǎng),項(xiàng)目也多了,后來(lái)其中有個(gè)項(xiàng)目就是關(guān)于微信開(kāi)發(fā)的,需要從微信端拿accessToken,項(xiàng)目的web.xml 配置了一個(gè)init的servlet,本來(lái)每次init一次,從微信端拿得accessToken,是正常的,但是部署到服務(wù)器之后,一直有問(wèn)題,后來(lái)研究了很久,在 項(xiàng)目中也寫(xiě)了很多l(xiāng)og,到后面,才發(fā)現(xiàn),是因?yàn)閕nit這個(gè)servler 被執(zhí)行了很多次導(dǎo)致的。沒(méi)執(zhí)行一次拿到一個(gè)accessToken,然后之前訪問(wèn)拿到的accessToken,跟最后一次項(xiàng)目的accessToken不匹配,導(dǎo)致了問(wèn)題出現(xiàn)。
后來(lái)才知道,是因?yàn)榍懊媾淞?個(gè)host才導(dǎo)致這樣的問(wèn)題的,因?yàn)楫?dāng)時(shí)對(duì)tomcat的web.xml配置不是很熟悉,后來(lái)網(wǎng)上搜了一堆,很巧合的發(fā)現(xiàn)了篇博客寫(xiě)的,其實(shí)多個(gè)域名對(duì)應(yīng)一個(gè)項(xiàng)目的話,可以使用web.xml 里面的一個(gè)標(biāo)簽,<Alias>www.XXX.com</Alias>
標(biāo)簽。
于是上面的配置就變成如下:
<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">, 因?yàn)橐粋€(gè)Engine 必須有一個(gè)host 跟 它的名字一樣,
這樣配置完之后,我們?cè)偃タ磍og,此時(shí)只init方法只執(zhí)行了一次。成功解決了問(wèn)題。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。