【问题标题】:Is it possible to invoke a MessageDrivenBean remotely directly through a @Remote interface?是否可以通过@Remote 接口直接远程调用 MessageDrivenBean?
【发布时间】:2020-12-06 19:35:32
【问题描述】:

我目前正在学习 EJB 2+ 的基础知识。在Java EE 7 The Big Picture 一书中提到:

会话 bean 通常通过远程接口访问(尽管我们将看到,在某些情况下不需要远程接口),而消息驱动 bean 只有一个 bean 实现类。

基于上面的陈述,调用一个消息驱动bean (MDB)就像通过一个 remote interface调用一个远程会话bean,它的服务器端接口是用@Remote注解完成的,好像是不可能的。

例如,如果远程 EJB 容器上有一个 MDB

@Remote
@MessageDriven(mappedName="jms/HelloQueue")
public class HelloMDB implements MessageListener {
    public void onMessage(Message msg) {
        //implementation
    }
}

问题:远程客户端是否可以直接以编程方式调用上述 MDB?通过 JNDI?

【问题讨论】:

  • 我的回答是否解决了您的问题?如果是这样,请将其标记为正确,以帮助将来可能有同样问题的其他人。如果没有,请详细说明缺少什么。谢谢!

标签: jms java-ee-7 message-driven-bean ejb-3.2


【解决方案1】:

不,远程客户端不能直接调用 MDB,如 Oracle 的 this Java EE 7 tutorial 中所述:

客户端组件不定位消息驱动的 bean 并直接在它们上调用方法。

如果您想调用 MDB 的 onMessage,那么只需将消息发送到它正在侦听的目的地。

【讨论】:

    猜你喜欢
    • 2015-02-23
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-13
    • 2016-01-10
    • 2014-03-01
    相关资源
    最近更新 更多