消息传递 - 为什么实体Bean或会话Bean不适合

时间:2012-07-01 09:52:46

标签: ejb jms

对于消息系统/处理消息 - 使用MDB;不要使用Entity Bean或Session Bean。请告诉我原因。

感谢Adv
RW

1 个答案:

答案 0 :(得分:0)

MDB旨在接受消息而其他消息则不接受。来自an old Sun tutorialstill the same in the up to date version

  

消息驱动的bean和会话之间最明显的区别   和实体bean是客户端不访问消息驱动的bean   通过接口。接口在定义部分中描述   带接口的客户端访问。与会话或实体bean不同,a   消息驱动的bean只有一个bean类

  

会话bean允许您发送JMS消息并接收它们   同步但不是异步。避免捆绑服务器   资源,不要使用阻塞同步接收   服务器端组件;通常,不应发送JMS消息或   同步收到。要异步接收消息,请使用   消息驱动的bean。

换句话说:在会话bean中,只能在调用bean时收到消息。应用服务器将自动调用附加到接收消息的目标(队列或主题)的MDB的onMessage方法。这意味着MDB将保证尽快处理每条消息,这是您无法保证使用会话bean的。