介绍
本指南关注确定消息驱动的 Bean。工作产品指南:消息驱动的 Bean 中提供了关于消息驱动的 Bean 的更多指导信息。 工作产品指南:Enterprise JavaBeans 中提供了关于 EJB 的一般指导信息。
消息驱动的 Bean 的一些特性有:
-
它们是无状态的。
-
它们不将值或异常返回给客户端。
-
它们没有接口,因为客户端不直接访问消息驱动的 Bean,但通过向 Bean 服务的目的地(或端点)发送消息,间接访问它们。有一个侦听器方法(在 JMS 消息驱动的 bean
中是“onMessage()”),该方法通常处理消息。这表示必须在运行时执行类型检查,使用“instanceOf()”操作来确定接收到的消息类型。
可以从任何地方(包括其他 EJB、Web 组件和应用程序客户机)将消息发送至容器。该容器按需要调用消息驱动的 EJB 来处理传入的消息事件。消息驱动的 EJB 可以访问其他会话 EJB 或实体 EJB,或者直接访问 EIS
层,以处理消息。
确定消息驱动的 Bean
消息驱动的 bean 提供异步处理消息的方法。会话和实体 bean 只可以同步调用。消息驱动的 bean 被作为对整个系统定义并行性的一部分进行标识。请参阅指南:并行以获取关于并行的常规指南,例如去耦调用者和调用代码的设计模式。通常作为任务:描述运行时体系结构的一部分来确定消息驱动的 Bean,以作为在 EJB
容器中提供并行的方法。因此,通常不直接从分析类标识它们,而是为解决特定设计问题(例如性能和耦合问题)而标识它们。
引入消息驱动的 bean 的一些原因有:
-
在软件的不同区域之间分隔问题-可以向队列发送消息而不用耦合至这些消息的使用者。还可以支持多个发送者和接收者。
-
通过允许消息发送者执行处理而不是在同步调用时被阻塞(例如在调用实体或会话 bean 时发生),来提高性能。
-
通过允许消息发送者即使在消息使用者脱机的时候也继续工作,来提高可靠性。
-
消息传递接口后面的面向消息的中间件(MOM)可能提供其他优点 - 例如有保证的消息传递。
-
存在现有的、使用消息传递通信的设计元素(例如早先的系统)。
对消息驱动的 Bean 建模
请参阅指南:确定 Enterprise JavaBeans(EJB)以获取关于对 EJB 建模的一般指导信息。但是注意,通常将消息驱动的 bean
建模为进程视图的一部分。关于在流程视图中对消息驱动的 bean 建模的特定指导信息,请参阅指南:描述 J2EE 应用程序的运行时体系结构。
将结果返回给消息发送者
消息驱动的 bean 不能直接将响应发送至消息发送者。
发送响应的典型策略是引入响应的另一个目的地或端点。请参阅 [ROM02] 以获取关于该策略的更多详细信息。
|