eclipse + JBoss 5 + EJB3开发指南(14):消息驱动Bean - 编程入门网
eclipse + JBoss 5 + EJB3开发指南(14):消息驱动Bean时间:2011-09-18 blogjava 哈佛校训在前面的文章中给出的SessionBean的例子都是同步调用SessionBean方法的,也就是说,只有当方法 中的代码都执行完,才能返回到客户端。但在某些情况下,由于SessionBean方法的执行时间比较长,这 就需要异步地调用该方法,否则客户端就需要等待比较长的时间。要实现异步调用,就需要使用本要讲的 消息驱动Bean。消息驱动Bean的基本原理是客户端向消息服务器发送一条消息后,消息服务器会将该消息 保存在消息队列中。在这时消息服务器中的某个消费者(读取并处理消息的对象)会读取该消息,并进行 处理。发送消息的客户端被称为消息生产者。 本文给出的消息驱动Bean的例子的基本功能是客户端向消息服务器发送一条消息(该消息实际上是一 个实体Bean的对象实例),然后消息消费者读取这条消息后,将消息中的实体Bean持久化。实现消息驱动 Bean的步骤如下: 一、实现实体Bean package entity; import java.io.Serializable; import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="t_date") public class DateBean implements Serializable { private int id; private Date myDate; @Id @GeneratedValue(strategy=GenerationType.IDENTITY) public int getId() { return id; } public void setId(int id) { this.id = id; } @Column(name="mydate") public Date getMyDate() { return myDate; } public void setMyDate(Date myDate) { this.myDate = myDate; } } eclipse + JBoss 5 + EJB3开发指南(14):消息驱动Bean(2)时间:2011-09-18 blogjava 哈佛校训二、编写消息驱动Bean 消息驱动Bean必须实现MessageListener接口,当该消息驱动Bean接收到一个消息后,EJB容器就会调 用MessageListener接口的onMessage方法来理该消息。消息驱动Bean的代码如下: package service; import javax.ejb.ActivationConfigProperty; import javax.ejb.EJBException; import javax.ejb.MessageDriven; import javax.jms.Message; import javax.jms.MessageListener; import javax.jms.ObjectMessage; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import entity.DateBean; @MessageDriven( activationConfig = { @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"), @ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/MDBQueue") }) public class DateMessageBean implements MessageListener { @PersistenceContext(unitName = "myentity1") private EntityManager em; @Override public void onMessage(Message message) { try { |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |