连接又是连接(上)

连接又是连接(上)

Corba的连接问题始终没有得到完美的解决。原有的Corba连接池在内网好好的,放到外网上通过若干设备中转后,大约一个小时后,已有的长连接就会成为坏连接,奇怪的现象是在Client端上,用netstat可以看到连接状态是ESTABLISHED,而在Server上却看不到相应的连接,如果这时通过Browse访问,则会出现长达5分钟以上的界面僵死,直到使用下一个备份Corba Server 才恢复正常,极大的影响了客户的感知度。估计在哪个设备上出现了问题,联系了厂商,找来找去,可就是找不到具体原因。因为移动流程制度的原因,又无法使用排除法对设备进行排除确认,郁闷,束手无策!

Bordand Supporter申称VisiBroker内部有连接池的管理和优化,可以不需要再做干预,商量了一下,决定抛弃长连接的方式,改为短连接,适应目前情形。Corba的连接包括倆个层面,一个是ORB对象的初始化,一个是根据ORB对象绑定POA对象。

花了一晚上,忙到凌晨倆点,改成ORB每次都进行初始化,同时绑定POA。这样连接的问题得以解决,但是新的问题又来了。首先,Client仍然出现连接不释放的情况,明明在finally里调用了_release()方法,但是连接仍然没有得以释放。真是奇了怪,不论是Bordand的范例Examples,还是在网上搜索,Client端上连接Corba Server,都只有Corba连接的部分,而没有释放的部分,难道大家都不考虑释放的情况?还是根本就不能释放?再有,虽然每次初始化ORB对象避免了界面僵死的情况,但是,Bordand Supporter并不建议我们每次初始ORB对象,这样会完全屏蔽调 VisiBroker 里针对ORB对象的所有优化,服务器无法承受,可是使用相同的ORB,又回到了长连接的连接坏死的问题上了。

又加了个班,把获取Corba连接改成了多线程的方式,多加了一个线程进行超时控制,这样可以把坏连接超时时间控制在允许范围之内,同时按照Bordand Supporter的建议,在客户端的ORB初始化里面,带入参数"vbroker.orb.cacheDSQuery=false",这样避免的长时间僵死的情况,但是连接无法释放的问题仍然存在。

转载于:https://www.cnblogs.com/vanuan/archive/2006/08/13/9576129.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值