为什么不使用Session Bean而不是Message Driven Beans?

时间:2010-10-01 08:54:02

标签: java-ee ejb message-driven-bean session-bean

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

如果你可以从EJB调用远程方法,那么为什么要使用Message Driven Beans(比会话bean更难开发)来发送/接收消息呢?

Message Driven Beans在哪些场景中变得有用?

3 个答案:

答案 0 :(得分:12)

  

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

嗯,它们没有用于同一目的,消息驱动的bean允许Java EE应用程序异步处理消息。

  

如果你可以从EJB调用远程方法,那么为什么要使用Message Driven Beans(比会话bean更难开发)来发送/接收消息呢?

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

  • 长期工作
  • 当资源不总是可用时
  • 当您想要并行化处理时

顺便说一句,我个人总是发现MDB是最容易开发的企业Bean。

  

Message Driven Beans在哪些场景中变得有用?

见上文。

另见

答案 1 :(得分:2)

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

这不会阻止服务器资源,因为只有当消息到达队列时才会发生处理。

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

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

答案 2 :(得分:2)

两者都有不同的目的。

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

2)但是如果response / result不是maters但是后面的消息对你来说是主要的,那么就去创建队列以使其工作并设置消息。但会出现性能问题。

如果你需要只使用方法,那么只使用Session bean,因为它是轻量级bean。它表现良好。