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

        

    在上一篇文章中我们已经了解如何用JavaMail来发送邮件.接下来我们将结合MDBJavaMail 来模拟实际项目中的一个业务.


          业务需求很简单:用户注册网站,注册成功后给用户发送一个通知邮件.实现此业务的技术读者需要对以下两篇文章进行阅读---带你走进EJB--MDB   带你走进EJB--MDB实现发送邮件(1) 这两篇文章为本篇文章做好了技术铺垫.以下的实现也是在两篇文章的基数之上进行了局部的更改.

 

         整体的过程如下:


         1 在业务逻辑方法中,系统保存用户注册信息,同时向该用户发送邮件通知,告知该用户已经注册成功.

         2  在业务逻辑方法中会通过JMS产生消息(发送邮件需要的相关信息)

         3 消息驱动Bean(MDB)作为JMS消息监听器,负责监听指定的JMS消息,JMS的消息送达JMS消息目的地的时候,MDBonMessage()方法会被触发.调用JavaMail相关类,发送邮件.

        4 MDB通过调用JavaMail工具类进行发送邮件,此工具类就是上篇文章的例子(除去客户端部分)


       通过以上四个步骤,我们就可以完成通过MDBJavamail发送邮件通知.

      

      接下来我们将模拟业务逻辑,在用户注册成功的时候,发送成功通知,以下代码便是完成注册,保存用户信息.


public int addUser( String userName,String password,String email)
			throws AuctionException {
		try {
			User user = new User();
			user.setUserName(userName);
			user.setUserPassWord(password);
			user.setEmail(email);
			// 持久化User对象
			userEao.save(user);

			// 创建链接工厂
			Connection conn = connFactory.createConnection();
			// JMS链接创建JMS会话
			Session session = conn.createSession(false/* 不是事务性会话 */,
					Session.AUTO_ACKNOWLEDGE);
			// JMS会话创建消息生产者.
			MessageProducer sender = session.createProducer(dest);
			// 设置消息生产者生产出来的消息的传递模式,有效时间.
			sender.setDeliveryMode(DeliveryMode.PERSISTENT);
			sender.setTimeToLive(20000);
			// 通过JMS会话创建一个MapMessage
			MapMessage msg = session.createMapMessage();
			msg.setString("mailTo", user.getEmail());
			msg.setString("userName", user.getUsername());

			// 发送消息
			sender.send(msg);
			conn.close();
			return bid.getId();
		} catch (JMSException e) {
			e.printStackTrace();
			log.debug(e.getMessage());
			throw new UserException("处理用户出现异常,请重试");
		}

	}



        以上代码内容,一方面是创建用户实例,保存用户信息,另一个方面建立JMS详细对话,并将消息传送到制定的目的地中,其中可以携带需求所需要的信息内容,这里我们传送的是用户名称和用户邮箱地址.

        鉴于篇幅,后两步的内容将在下一篇文章中继续进行.


你可能感兴趣的:(带你走进EJB--MDB实现发送邮件(2))