【问题标题】:how to send Message from Session bean to MessageDrivenBean indirectly如何将消息从 Session bean 间接发送到 MessageDrivenBean
【发布时间】:2012-04-15 22:25:24
【问题描述】:

我想知道如何将 Message(javax.jms.Message) 从 MySatefulSessionBean 发送到 MySingletonBean,然后再发送到 MyMessageDrivenBean。我正在使用 Netbeans,因此我可以右键单击Singleton Bean 的源代码,然后选择发送 JMS 消息

但这会使 MySingletonBean 中生成的消息发送到 MyMessageDrivenBean,而我真正想要做的是从 转发消息MySatefulSessionBeanMyMessageDrivenBean

即不是在 MySingleTonBean 中创建新消息并将其发送到 MyMessageDrivenBean 进行处理,我希望 MySatefulSessionBean 实例化的消息由 MyMessageDrivenBean 的 onMessage(Message msg ) 方法。

由于个人原因,我无法让 MySatefulSessionBean 直接与 send Message to MyMessageDrivenBean 对话;所以消息应该间接转到 MyMessageDrivenBean

你能告诉我怎么做吗?

提前致谢

【问题讨论】:

    标签: ejb jms


    【解决方案1】:

    实际上不要在有状态会话 bean 中准备消息,而只准备实际的有效负载。

    将此有效负载作为方法参数调用您的单例,然后将 JMS 消息创建作为单例的内部详细信息。

    【讨论】:

    • 谢谢迈克,听起来不错;我看看我能不能理解你为什么建议!
    • 我的意思是“什么”,抱歉打错了。
    【解决方案2】:

    您不应该在除消息驱动 Bean 之外的 EJB 中接收 JMS 消息。因此,您的 MySingletonBean 不应接收 JMS 消息。如果你设法以某种方式实现它,你会得到各种疯狂的错误(因为 EJB 对象生命周期规则)。

    所以重新考虑你的架构。

    【讨论】:

    • 感谢您的回答 Piotr Kochański。但问题是,我没有收到 MySingletonBean 中的消息。我只是用它为从 MySatefulSessionBean 发送的 ObjectMessage 加上时间戳,然后将其转发给 MyMessageDrivenBean。
    • “转发消息”是什么意思?在 MySingletonBean 中不接收消息是如何实现的
    • 是的,这也让我感到困惑。但是我给出的规范是每个独立客户端都应该使用有状态会话 Bean(MySatefulSessionBean)向聊天管理器(MySingletonBean)发送消息。然后聊天管理器将消息发送到队列以由 MyMessageDrivenBean 处理。
      独立客户端不会发送 javax.jms.Message 而是一些 Serializable 对象,这就是我将 ObjectMessage 发送到 MyMessageDrivenBean 的原因。
    猜你喜欢
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多