簡體   English   中英

通過Servlet處理登錄到XMPP服務器的操作

[英]Handling logins to a XMPP server via servlets

我想聽聽一些有關如何在servlet容器(例如Tomcat)上管理壽命長的XMPP連接的評論。

基本上,我們有一個將登錄憑據提交到servlet的客戶端,我們為每個會話創建一個XMPPConnection並將其存儲在HttpSession中。

為簡單起見,客戶端可以執行4個操作:登錄,發送/接收消息,注銷。

(1)如您所見,XMPPConnection的生存期應由客戶端處理(控制)。 在我們的示例中,HttpSession具有與之關聯的超時。 您是否認為對HttpSession的依賴是錯誤的?

(2)從垃圾回收的角度來看,如果HttpSession超時並且我們沒有專門調用XMPPConnection.disconnect(),這是一個問題嗎? 據我了解,一旦達到超時,Session作用域中的所有對象都會被GC處理。 如果VM仍然處於連接狀態,VM是否會停止運行並忽略XMPPConnection?

(3)HttpSession超時和無效之間有什么區別? 我的理解是,超時是指特定的對象,而無效會刪除所有內容。

(1)盡管可能有更好的方法,但我不一定會在會話中存儲XMPP憑據時遇到問題。 我最近做了一些類似的事情,並且依賴於HttpSession。

(2)為了解決超時問題,您有兩種選擇。 您可以在Servlet發送/接收的任何消息中動態設置會話超時(session.setTimeout()),也可以在web.xml中將其設為靜態值(值-1表示沒有超時)。 然后,您可以創建一個SessionListener並在sessionDestroyed上調用XMPPConnection.disconnect()。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM