微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否可以通过@Remote接口直接远程调用MessageDrivenBean?

如何解决是否可以通过@Remote接口直接远程调用MessageDrivenBean?

我目前正在学习EJB 2+的基础知识。在 Java EE 7大图一书中,提到了:

会话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?

解决方法

否,如Oracle this Java EE 7 tutorial所述,远程客户端不能直接调用MDB,它指出:

客户端组件不会找到消息驱动的bean,也不会直接在其上调用方法。

如果您要调用MDB的<script>,则只需将一条消息发送到正在侦听的目标即可。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。