2012-07-10 94 views
0

正確設置web.xml中的會話超時設置,並且tomcat超時到指定的值。問題是如何超時發生。使用AJAX的tomcat超時配置

導航到新頁面時重置超時,但激活瀏覽器(通過keystore或鼠標單擊)或進行AJAX調用不會重置超時。我嘗試了幾個tomcat屬性無濟於事,是否有一個屬性可以處理這種類型的超時配置?

預先感謝您

回答

0

HttpSession是一個服務器端對象,因此Web瀏覽器中的按鍵和鼠標事件不會自動重置超時。但是,您可以監視客戶端上的鍵盤和鼠標事件,並定期對服務器進行RPC調用,以保持會話活動。

但是你也在說Ajax調用不會重置服務器上的會話超時。這很奇怪,因爲我已經做了很多次了,它確實爲我重置了它。你在使用GWT RPC還是另一種序列化機制?

我不知道這一點,但也許你還需要訪問從Ajax調用執行會話超時通過調用getThreadLocalRequest().getSession()(如果使用GWT RPC)獲得例如復位。

+0

正如你所說,我需要首先訪問會話,並找到一種方法來重置HttpSession的lastAccessTime(org.apache.shiro.web.session中的HttpServletSession超出範圍,它的touch()方法將解決我的問題)。我認爲一個tomcat屬性太好了,不能成爲真實的:)。應該能夠從這裏找到解決方案,謝謝你的時間。 – user1515633 2012-07-11 17:24:02

0

您是否嘗試刪除在server.xml文件中ConnectionTimeout參數?

即:如果你有這樣的:

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" URIEncoding="UTF-8"   redirectPort="8443" /> 

將其更改爲:

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="<A VERY LARGE NUMBER>" URIEncoding="UTF-8"   redirectPort="8443" /> 

或:

<Connector port="8080" protocol="HTTP/1.1" URIEncoding="UTF-8"   redirectPort="8443" /> 

你有沒有嘗試過這樣的事情,在你的server.xml文件?

+0

問題不在於連接超時。這是關於會話超時。沒有答案。 – EJP 2012-07-11 01:52:06