更新時(shí)間:2022年12月27日10時(shí)17分 來(lái)源:傳智教育 瀏覽次數(shù):
當(dāng)客戶端第一次訪問(wèn)某個(gè)能開(kāi)啟會(huì)話功能的資源時(shí),Web服務(wù)器就會(huì)創(chuàng)建一個(gè)與該客戶端對(duì)應(yīng)的HttpSession對(duì)象。在HTTP協(xié)議中,Web服務(wù)器無(wú)法判斷當(dāng)前的客戶端瀏覽器是否還會(huì)繼續(xù)訪問(wèn),也無(wú)法檢測(cè)客戶端瀏覽器是否關(guān)閉,所以,即使客戶端已經(jīng)離開(kāi)或關(guān)閉了瀏覽器,Web服務(wù)器還是會(huì)保留與之對(duì)應(yīng)的HttpSession對(duì)象。隨著時(shí)間的推移,這些不再使用的HttpSession對(duì)象會(huì)在Web服務(wù)器中積累得越來(lái)越多,從而使Web服務(wù)器的內(nèi)存耗盡。
為了解決上述問(wèn)題,Web服務(wù)器采用了超時(shí)限制的辦法判斷客戶端是否還在繼續(xù)訪問(wèn)。在一定時(shí)間內(nèi),如果某個(gè)客戶端一直沒(méi)有請(qǐng)求訪問(wèn),那么Web服務(wù)器就會(huì)認(rèn)為該客戶端已經(jīng)結(jié)束請(qǐng)求,并且將與該客戶端會(huì)話所對(duì)應(yīng)的HttpSession對(duì)象變成垃圾對(duì)象,等待垃圾收集器將其從內(nèi)存中徹底清除。如果瀏覽器在超時(shí)后再次向服務(wù)器發(fā)出請(qǐng)求訪問(wèn),那么Web服務(wù)器則會(huì)創(chuàng)建一個(gè)新的HttpSession對(duì)象,并為其分配一個(gè)新的ID屬性。
在會(huì)話過(guò)程中,會(huì)話的有效時(shí)間可以在web.xml文件中設(shè)置,其默認(rèn)值由Servlet容器定義。在Timecat安裝目錄的conf文件夾下的web.xml文件中,可以找到如下一段配置信息:
<session-config> <session-timeout>30</session-timeout> </session-config>
在上面的配置信息中,設(shè)置的時(shí)間值以分鐘為單位,即Tomcat服務(wù)器的默認(rèn)會(huì)話超時(shí)間隔為30分鐘。如果將session-timeout元素中的時(shí)間值設(shè)置成0或一個(gè)負(fù)數(shù),則表示會(huì)話永不超時(shí)。由于Tomcat安裝目錄\conf\web.xml文件對(duì)站點(diǎn)內(nèi)的所有Web應(yīng)用程序都起作用,因此,如果想單獨(dú)設(shè)置某個(gè)Web應(yīng)用程序的會(huì)話超時(shí)間隔,則需要在相應(yīng)項(xiàng)目的web.xml文件中進(jìn)行設(shè)置。
北京校區(qū)