首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

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

2013-10-01 
带你走进EJB--MDB实现发送邮件(2)在上一篇文章中我们已经了解如何用JavaMail来发送邮件.接下来我们将结合M

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

        

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


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

 

        整体的过程如下:


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

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

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

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


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

      

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


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会话创建一个MapMessageMapMessage 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详细对话,并将消息传送到制定的目的地中,其中可以携带需求所需要的信息内容,这里我们传送的是用户名称和用户邮箱地址.

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


热点排行