繁体   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