0

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

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

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

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

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

问题:上面提到的 MDB 是否可以完全由远程客户端直接和以编程方式调用。例如,通过 JNDI?

4

1 回答 1

1

不,如Oracle的Java EE 7 教程中所述,远程客户端不能直接调用 MDB,其中指出:

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

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

于 2020-08-17T16:44:00.713 回答