Spring JavaMailSender,Tomcat,JNDI

时间:2015-04-27 20:29:26

标签: java eclipse tomcat javamail jndi

我一直在讨论这个问题,而且我已经厌倦了柔软的声音。

我需要在Tomcat平台上配置JavaMail实例。当然,我不想对war文件中的连接参数进行硬编码,所以我一直在尝试建立JNDI配置。但是,我收到一个异常,表明存在类路径问题(引起:java.lang.NoClassDefFoundError:javax / mail / Authenticator)。这是我的代码:

    <Resource name="mail/Session"
          auth="Container"
          type="javax.mail.Session"
          username="jpulcifer@gmail.com"
          password="Camp1onelcap"
          mail.debug="true"
          mail.user="jpulcifer@gmail.com"
          mail.password="Camp1onelcap"
          mail.transport.protocol="smtp"
          mail.smtp.host="smtp.gmail.com"
          mail.smtp.auth="false"
          mail.smtp.port="465"
          mail.smtp.starttls.enable="false"/>

        Session mailSession = null;

    try {
        mailSession = InitialContext.doLookup("java:comp/env/mail/Session");

我不知道该怎么做。我已经阅读了一些评论,将mail.jar和activation.jar复制到[TOMCAT_HOME] / lib,但这看起来很......尴尬。另外,我不确定如何在开发环境(Eclipse)中执行此操作。有人能指出我正确的方向吗?我真的被困在这里;这似乎不是一件困难的事情,但显然我证明这是错误的。

2 个答案:

答案 0 :(得分:1)

如果你没有将mail.jar放在Tomcat的lib目录中, 你把它放在哪里?您应该能够将其放在WEB-INF/lib directory

答案 1 :(得分:0)

通过声明资源,您要求服务器提供此资源,在这种情况下是与邮件服务器的连接。它是提供资源的服务器,因此jar应该位于服务器的类路径中,而不是Web应用程序(使用单独的类加载器)。

所以javax.mail.jar应该在TOMCAT-HOME / lib中。