11

我想知道,为什么不使用 Session Beans 而不是 Message Driven Beans ?

如果您可以从 EJB 调用远程方法,那么为什么还要使用消息驱动 Bean(它比会话 bean 更难开发)来发送/接收消息?

消息驱动 Bean 在哪些情况下有用?

4

3 回答 3

12

我想知道,为什么不使用 Session Beans 而不是 Message Driven Beans ?

嗯,它们的用途不同,消息驱动的 bean 允许 Java EE 应用程序异步处理消息。

如果您可以从 EJB 调用远程方法,那么为什么还要使用消息驱动 Bean(它比会话 bean 更难开发)来发送/接收消息?

因为 MDB 为您提供了异步性和松散耦合,这是您在某些情况下可能想要/需要的:

  • 对于长时间运行的工作
  • 当资源并不总是可用时
  • 当您想要并行处理时

顺便说一句,我个人一直认为 MDB 是最容易开发的 Enterprise Bean。

消息驱动 Bean 在哪些情况下有用?

看上面。

也可以看看

于 2010-10-01T09:32:38.753 回答
2

两者都有不同的用途。

1)如果您只想将它​​用于远程方法使用,那么只需使用 Session Bean

2)但是如果响应/结果不重要,但后面的消息对您很重要,那么请使用 JMS,因为它正在创建队列以使其工作并设置消息。但性能问题将存在。

如果您只需要使用方法,那么只需使用会话 bean,因为它是轻量级 bean。它提供了良好的性能。

于 2013-04-15T10:24:35.043 回答
2

与实体/会话 bean 不同,消息驱动 bean异步侦听 JMS 队列。

这不会阻塞服务器资源,因为仅当消息到达队列时才会进行处理。

除了大量的 Java 论坛和网站之外,维基百科还有一组很好的用例,MDB 可以派上用场

http://en.wikipedia.org/wiki/Enterprise_JavaBean#Message_driven_beans

于 2010-10-01T09:19:27.807 回答