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

moh*_*ida 11 ejb session-bean java-ee message-driven-bean

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

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

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

Pas*_*ent 12

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

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

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

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

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

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

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

往上看.

也可以看看

  • 我要补充一点,MDB不一定是异步的,它实际上是驱动通信风格的连接器.MDB诞生于JMS之外,Connector API是从该用例中抽象出来的,但现在Connector/MDB关系实际上允许任何类型的通信.我对EJB.next有一些想法,以进一步简化MDB/Connector关系,以便Connector可以提供MDB可以使用的自己的注释,使@ActivationConfig和显式MessageListener接口的需求无关.那么像JAX-RS这样的东西可以作为Connector/MDB来完成. (2认同)