【问题标题】:Handling connection errors in a MDB处理 MDB 中的连接错误
【发布时间】:2010-02-18 15:32:33
【问题描述】:

是否可以在 MessageDrivenBean 中管理连接超时或错误?

您可以让工厂重试连接一定次数,但是......是否可以在每次需要重新连接重试时进行一些操作?是否可以以某种方式将 ExceptionListener 注册到 MessageDrivenBean 的连接中?

非常感谢。

【问题讨论】:

  • 一种可能的解决方案(特定于 glassfish 容器)是为 JMS 注册一个新的连接工厂,该连接工厂包装真实的连接工厂并在那里进行大量检查。无论如何,这意味着您必须知道何时从 MDB 使用连接工厂,以及何时不使用哪个 AFAIK。

标签: java jakarta-ee ejb ejb-3.0 message-driven-bean


【解决方案1】:

最后我无法做到这一点,但我将 jmsjra 更改为更适合我需要的 JMSJCA。 JMSJCA 包含在 Glassfish ESB 项目中。

【讨论】:

    【解决方案2】:

    您始终可以拥有某种错误主题或队列,您可以将异常发布到您的 MDB。如果需要,在错误消息中包含相关 ID 以与原始消息同步。

    【讨论】:

    • 我确实愿意:P。但问题是 MDB 封装了所有连接异常,并通过自身重新连接来管理异常(如果可能),但让我无法自己处理它,并且除了重新连接之外还没有执行任何额外的必要步骤。
    • 有什么理由不使用服务器定义的池来管理连接?将其完全从应用程序手中拿走,让服务器管理它。
    • 问题是我需要明确知道连接丢失和恢复的次数。
    • 如果只是审核/报告的问题,那么您可以简单地将该信息发布到另一个队列,或调用适当的服务。如果您需要采取某种行动,为什么不简单地从您的 MDB 中调用另一个服务(同步)。
    • 好吧,也许我在这里误会了。您是否在连接到实际 MDB 或从 MDB 内连接到其他东西时遇到问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-11
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多