QC同事提到似乎有時Tomcat的會話超時表現有問題,記錄一下可能用到的配置。
1)超時時間的設定
tomcat的會話超時可以在多個級別上設置:tomcat實例級別、Web應用級別、servlet級別以及運行時Context代碼級別。
較低級別的設定會覆蓋較高級別的設定。
一般常用的是在前面兩個級別上設置,分別在 /conf/web.xml和/webapps/yourapp/WEB-INF/web.xml,形如:
<session-config>
<session-timeout>30</session-timeout>
</session-config>
單位是分鍾。
2)重啟時保持會話
在關閉Tomcat實例/取消Web應用部署時,缺省會把當前的活動會話保存到硬盤上,並在重啟啟動/部署時在把會話從硬盤上加載到內存中。
文件保存在各目錄下的SESSIONS.SER中。有時可能會話中保存了敏感信息,或者不希望使用這個特性,可以配置Context.xml文件關閉這個選項。
配置 manager.pathname == ""即可,形如:
<Manager pathname="" />
網上多流傳配置 Persistent Manager 來完成這個功能,Tomcat 4.x 和 5.5 在配置文檔中都明確的指出 Persistent Manager 是一個體驗性質的特性,並沒有經過完全的測試。
不過話說Tomcat關於會話的設定也不甚直觀,在其文檔中明確的說明,Manager組件的工作就是session manager,可以設置maxInactiveInterval,而web.xml中有可以設定 session-timeout。再加上全局、應用,不同地方定義的超時時間撞到一起時,又有優先級的問題。這個設計是毫無意義的復雜。
1)超時時間的設定
tomcat的會話超時可以在多個級別上設置:tomcat實例級別、Web應用級別、servlet級別以及運行時Context代碼級別。
較低級別的設定會覆蓋較高級別的設定。
一般常用的是在前面兩個級別上設置,分別在 /conf/web.xml和/webapps/yourapp/WEB-INF/web.xml,形如:
<session-config>
<session-timeout>30</session-timeout>
</session-config>
單位是分鍾。
2)重啟時保持會話
在關閉Tomcat實例/取消Web應用部署時,缺省會把當前的活動會話保存到硬盤上,並在重啟啟動/部署時在把會話從硬盤上加載到內存中。
文件保存在各目錄下的SESSIONS.SER中。有時可能會話中保存了敏感信息,或者不希望使用這個特性,可以配置Context.xml文件關閉這個選項。
配置 manager.pathname == ""即可,形如:
<Manager pathname="" />
網上多流傳配置 Persistent Manager 來完成這個功能,Tomcat 4.x 和 5.5 在配置文檔中都明確的指出 Persistent Manager 是一個體驗性質的特性,並沒有經過完全的測試。
不過話說Tomcat關於會話的設定也不甚直觀,在其文檔中明確的說明,Manager組件的工作就是session manager,可以設置maxInactiveInterval,而web.xml中有可以設定 session-timeout。再加上全局、應用,不同地方定義的超時時間撞到一起時,又有優先級的問題。這個設計是毫無意義的復雜。