日期:2014-05-16 浏览次数:20493 次
接上篇,在业务逻辑中已经发送JMS消息,而接下来的消息驱动Bean作为JMS消息监听器,主要是负责监听指定的JMS消息,此时已经接受到JMS的消息,那么MDB的onMessage()方法会被触发.调用SimpleMailSender类,发送邮件.
import javax.ejb.ActivationConfigProperty; import javax.ejb.MessageDriven; import javax.jms.MapMessage; import javax.jms.Message; import org.jnqqls.auction.util.SimpleMailSender; @MessageDriven(activationConfig = { /* 指定MDB所监听消息目的的类型 */ @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"), @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"), /* 指定MDB所监听的消息目的的JNDI绑定名 */ @ActivationConfigProperty(propertyName = "destiniation", propertyValue = "Queue") }, /* 让MDB的Bean实现类间接地实现MessageListener接口 */ messageListenerInterface = javax.jms.MessageListener.class, /* 指定MDB所监听的消息目的的JNDI绑定名 */ mappedName = "Queue") public class MailMDB { //实现onMessage方法——当JMS消息被送达消息目的时, //该方法被触发 public void onMessage(Message rawMsg){ try { if(rawMsg instanceof MapMessage){ //将消息强制转换为MapMessage MapMessage msg=(MapMessage) rawMsg; String mailTo=msg.getString("mailTo"); String userName=msg.getString("userName"); //准备发送邮件 SimpleMailSender simpleMailSender = new SimpleMailSender(); //设置smtp服务器地址 simpleMailSender.setSmtpServer("smtp.163.com"); //设置登录的用户名 simpleMailSender.setUsername("用户名"); //设置登录密码 simpleMailSender.setPassword("密码"); //设置收件人地址 simpleMailSender.setTo(mailTo); //设置发送人地址 simpleMailSender.setFrom("发件人地址"); //设置标题 simpleMailSender.setSubject("注册通知"); //设置邮件内容 simpleMailSender.setContent("亲爱的" +userName + ", 您注册网站成功! ); if (simpleMailSender.send()) { System.out.println("恭喜邮件发送成功"); }else{ System.out.println("邮件发送失败"); } } } catch (Exception e) { e.printStackTrace(); } } }