![]() |
1
16
啊……旧的异常处理/重新连接难题。 有些传输提供商会自动为您重新连接应用程序,有些则会重新连接应用程序驱动器。通常,重新连接会将异常隐藏在应用程序中。缺点是你不想让应用程序永久挂起。 全部的 远程消息节点已关闭,因此最终, 必须 包括一些重新连接逻辑。 现在有一个有趣的部分-您如何以一种与提供者无关的方式处理异常?JMS异常实际上毫无价值。例如,“安全异常”可以是Java安全策略过于严格,文件系统权限过于严格,LDAP证书失败,连接到传输失败,队列或主题的打开失败,或任何其他与安全相关的问题。链接的异常具有来自传输提供程序的详细信息,这确实有助于调试问题。我的客户一般都采取了三种不同的方法中的一种…
在您的情况下,队列和主题对象可能只在原始连接的上下文中有效。假设自动重新连接的提供程序出现异常,则意味着重新连接失败,无法还原队列和主题对象的上下文。关闭所有对象并重新连接。 您是否想做一些更为特定于提供者的事情,例如区分暂时性错误和永久性错误,这是其中一个“它取决于”的事情,并且您必须根据具体情况来确定这一点。 |
![]() |
2
6
监视连接异常的最佳方法是设置异常侦听器,例如:
|
![]() |
3
4
JMS规范没有描述任何传输协议,它没有提到任何关于连接的内容(即,代理应该使它们保持活动状态,或者为每个会话建立一个新的连接)。所以,我想你的意思是
就是你试图发送一条消息,却得到了JMSException。 我想,唯一能看经纪人是否能成功的方法就是发送一条消息。 |
![]() |
4
1
对于基于连接的JMSException,唯一的选择是尝试在异常处理程序中重新建立连接,然后重试该操作。 |