tomcat中的JNDI

1.配置JNDI资源;

在WebRoot/META-INF下新建一个File:context.xml。context中的内容如下 :

<Context>
<Resource name="mail/Dog"
 auth="Container"
 type="javax.mail.Session"
 mail.smtp.host="smtp.sina.com"
 mail.smtp.auth="true"
 mail.transport.protocol="smtp" />
</Context>

 

2.将mail.jar拷贝到<tomcat_home>/lib目录下子;

没有的话会因为这tomcat下找不到mail.jar而报错。

请注意在项目文件夹下将不再需要mail.jar。否则将出现Session对象转换异常错误(因为这样的话,两个Session对象一个来自tomcat中的mail.jar,另一个来自项目文件夹下的mail.jar)。

3.在Java程序中使用JNDI API获得mail的Session对象。

在项目文件中添加代码如下 :

   Context initCtx = new InitialContext();
   Context envCtx = (Context) initCtx.lookup("java:comp/env");
   Session session = (Session) envCtx.lookup("mail/Dog");
   System.out.println(envCtx.lookup("mail/Dog").getClass().getClassLoader().getClass().getName());
   System.out.println(Session.class.getClassLoader().getClass().getName());
   Message message = new MimeMessage(session);
   message.setFrom(new InternetAddress("ming_foryou@sina.com"));
   InternetAddress to[] = new InternetAddress[1];
   to[0] = new InternetAddress("ming_foryou@sina.com");
   message.setRecipients(Message.RecipientType.TO, to);
   message.setSubject("ha");
   message.setContent("test", "text/plain");
//   Transport.send(message);
   Transport ts=session.getTransport();
   ts.connect("smtp.sina.com", "ming_foryou", "********");
   ts.sendMessage(message, to);
   ts.close();

 

posted @ 2011-11-24 19:15  残星  阅读(626)  评论(0编辑  收藏  举报