日期:2014-05-16 浏览次数:20581 次
接上篇,在业务逻辑中已经发送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();
}
}
}