Java EJB 技术:消息驱动 Bean、事务与异常处理详解
1. 消息驱动 Bean 基础
1.1 消息驱动 Bean 的特点
消息驱动 Bean(MDB)没有客户端视图,即没有本地或远程的主接口和组件接口。其生命周期由容器控制,而非客户端。与无状态会话 Bean 类似,MDB 不维护会话状态,不过实例可以包含实例变量。MDB 会从 JMS 目的地(如 javax.jms.Queue
或 javax.jms.Topic
)异步消费消息,未来可能支持其他消息中间件。
1.2 定位消息目的地代码示例
以下代码展示了如何定位 MDB 消费消息的目的地:
Context ctx = new InitialContext();
Queue someQueue = (javax.jms.Queue)
ctx.lookup("java:comp/env/jms/someQueue");
1.3 消息驱动 Bean 需实现的接口和方法
MDB 类必须实现 javax.ejb.MessageDrivenBean
和 javax.jms.MessageListener
接口,具体方法如下表所示:
| 接口 | 方法 | 说明 |
| — | — | — |
| javax.ejb.MessageDrivenBean
| setMessag