Tao客户端在服务器关闭时的健壮性
Posted
技术标签:
【中文标题】Tao客户端在服务器关闭时的健壮性【英文标题】:Tao Client robustness on server down 【发布时间】:2015-11-16 13:00:31 【问题描述】:上下文:在服务器-客户端设置中(使用 ace-tao)。
问题说明:服务器可能已关闭,而客户端已启动并尝试进行 API 调用。现在为了使客户端设置更加健壮,我想让客户端能够了解服务器关闭状态,并且当服务器再次启动时,它可以尝试重新绑定并准备好新的 ORB,以备不时之需API 调用。
有什么建议吗?
【问题讨论】:
尝试在服务器端对 IORTable 使用持久对象引用。这样,客户端只需获取一次引用,并且可以在服务器关闭时尝试使用该引用重新连接。较新的 TAO 版本确实有一些自动重试选项。 不想改变服务器(持久性策略等相关)。 【参考方案1】:对于 TCP/IP,只有一种解决方案。您必须实现所谓的 heatbeat 连接:简单的回显连接并分析读写调用的返回码。 TCP/IP 中没有针对连接状态的回调:存活或死亡。
【讨论】:
您可以将隐式可用的 _validate_connection() 调用为 ping,它只 ping CORBA 服务器功能,而不是您的业务代码。 当远程服务器启动时,我可以从 _validate_connection() 返回“true”值,否则当服务器关闭时会出现异常。这是预期的行为吗?正如我所期待的,当服务器关闭时,“错误”。此外,我得到的第一个异常是“COM.failure..”,下一次尝试我得到“瞬态错误......”。请@Johnny cmets。 @Dmitry,tao 有“心跳”隐式策略。但是,当系统有很多 ORB 时,不建议这样做。但是,我尝试了组合,其中,我将在生成的线程上轮询(即 validate_connection)并基于返回值,并引发异常,决定服务器启动/关闭状态,并因此尝试“重新连接” 是的,当它失败时有一个异常,该异常可以告诉你更多关于它失败的原因以上是关于Tao客户端在服务器关闭时的健壮性的主要内容,如果未能解决你的问题,请参考以下文章