失效连接的检测
来源:互联网 发布:怎么对付淘宝恶意买家 编辑:程序博客网 时间:2024/04/29 12:58
当客户端的应用程序退出时,应该关闭所使用的资源。在finally进行资源的关闭 是一个很好的方法。
下面的例子中,一个Hornet客户端在finally中关闭了它的会话(session)和会话工厂(session factory):
ClientSessionFactory sf = null;ClientSession session = null;try{ sf = HornetQClient.createClientSessionFactory(...); session = sf.createSession(...); ... do some stuff with the session...}finally{ if (session != null) { session.close(); } if (sf != null) { sf.close(); }}
下面的例子给出了一个JMS客户端是如何适当关闭相关资源的:
Connection jmsConnection = null;try{ ConnectionFactory jmsConnectionFactory = HornetQJMSClient.createConnectionFactory(...); jmsConnection = jmsConnectionFactory.createConnection(); ... do some stuff with the connection...}finally{ if (connection != null) { connection.close(); }}
然而有时候资源在客户端得不到合理的关闭。有的客户端应用在结束时忘记了关闭资源,有的客户端有时发生故障导致 程序突然中断,相关资源也没有来得及关闭!
如果上述情况发生了,那么这些资源就会留在服务器端而不会被清理。这就会造成资源泄漏现象并最終导致服务器内存 溢出或其它资源的溢出错误。
因此在服务器端要有某种机制来避免资源的泄漏。也就是对无效资源进行回收。在判断什么是无效资源时,HornetQ 考虑到了客户端重新连接的情况。就是当一个连接由于网络临时中断后又恢复正常时,客户端有可能通过不断重试 成功地连接到服务器端。如果服务器端过早清除了相关的连接资源,则客户端就可能重试失败。
HornetQ的资源回收是完全可配置的。每个 ClientSessionFactory 有一个连接 TTL的参数。 这个参数的意义是当客户端的一个连接没有任何数到达服务器时,服务器充许这个连接有效的最长时间。客户端通过定 时向服务器端发送“ping“数据包来维持连接的有效,以免被服务器关掉。如果服务器在TTL指定的时间内没有收到任何 数据包,则认为该连接无效,继而关闭与该连接相关的所有的会话(session)。
如果使用JMS,HornetQConnectionFactory的ConnectionTTL 属性是用来定义连接的存活时间的。如果你将JMS连接工厂部署到JNDI中,则应使用配置文件中的connection-ttl参数来定义连接的TTL。
默认的连接TTL值是60000毫秒,即一分钟。 ConnectionTTL 设为-1表示服务器永远不检测超时的连接。
如果你不想让客户端来规定连接存活时间(TTL),你可以在服务器端的配置文件中定义 connection-ttl-override属性。它的默认值是-1,表示 服务器端该属性无效(即客户端可以定义自己的连接TTL)。
客户端配置需要在hornetq-jms.xml中添加connection-factory.connection-ttl属性
服务端配置需要在hornetq-configure.xml中添加connection-ttl-override属性
- 失效连接的检测
- 左连接失效的原因
- MySQL中判断连接失效的方法
- 关于httpclient 连接失效引发的问题
- Cassandra失效检测原理
- Unity_使用EasyTouch插件碰撞检测失效的解决方法
- 碰撞检测的资源连接
- "半连接"检测的研究
- HttpClient连接池的连接保持、超时和失效机制
- HttpClient连接池的连接保持、超时和失效机制
- MySQL连接失效
- MySQL连接失效问题
- 因数据迁移导致跨库连接失效的解决办法
- thrift无法判断连接失效的原因与解决方案
- mysql 8小时空闲后连接失效的解决
- c3p0 MySQL连接8小时失效问题的官方解决方案
- weblogic中设置:自动检查连接池中的连接是否有效,并重建失效的连接
- 如何去检测网络的连接状态
- mysql数据库合并问题
- Hibernate入门(1)
- 【从CSLA中学C#】2 Attribute的使用
- JavaScript中的对象和原型链,函数继承(转)
- 数组控制me("crlName")的调用方法
- 失效连接的检测
- 大数相乘
- 比无情的竞争对手更胜一筹 穆利堂-movno1
- 闲死人怎么办
- Sharepoint 2010 Form 身份认证的实现(基于SQL)
- 成功配置了squid+apache+tomcat
- 线段树经典题目(一定要做完)
- 在互联网上销售无线服务穆利堂-movno1
- 数据同步算法研究