我有一個使用Stripes和Apache Shiro庫進行安全性的web應用程序。Tomcat爲同一會話創建新線程
在我的本地Windows Tomcat 6.0.33安裝一切工作正常。但是,當我在主機DailyRazor上的Linux上的Tomcat 6.0.16上運行應用程序時,我可以看到週期性的Tomcat正在爲同一用戶/會話產生一個新線程,因此用戶正在丟失其憑據並被要求登錄再次。
在Jetty下運行時,我也注意到了這個問題。
我不認爲這是一個不活動的超時問題,因爲我給webapp的命中是順序的,除了不同的小版本之外,Tomcat配置中是否有其他可能不同的東西?
另外,是否有一個簡單的方法來調試會話信息(因爲它沒有出現在我的網址)?
它是否在請求處理中啓動一個新線程?或者它啓動一個新的線程來處理新的請求。如果後者,這是可以預料的。你是否將憑據存儲在ThreadLocal中,並希望它始終使用同一個線程進行會話? – 2011-12-20 12:20:22
您可以通過正常記錄轉儲會話ID - 但是您說您已經知道它是同一會話,您怎麼知道這一點?用戶的會話可以跨任意數量的線程存在。 – 2011-12-20 12:33:49
@JBNizet我在收到請求時進行日誌記錄,對於來自同一瀏覽器窗口的不同請求,這可能會有所不同。我相信Shiro將證書存儲在一個ThreadLocal中,因爲有一個靜態調用來獲取當前主題,我不能保證一個線程會與會話ID緊密相關嗎?......這樣說吧,我覺得像我一樣已經知道答案 – 2011-12-20 14:49:18