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();