日期:2014-05-16  浏览次数:20493 次

带你走进EJB--MDB实现发送邮件(3)

    

     接上篇,在业务逻辑中已经发送JMS消息,而接下来的消息驱动Bean作为JMS消息监听器,主要是负责监听指定的JMS消息,此时已经接受到JMS的消息,那么MDBonMessage()方法会被触发.调用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();
			}
		}
	}