2015-04-27 2 views
2

Я ударил головой по этому вопросу, и я устал от хлюпающего звука.Весна JavaMailSender, Tomcat, JNDI

Мне нужно настроить экземпляр JavaMail на платформе Tomcat. Конечно, я не хочу жестко кодировать параметры подключения в военном файле, поэтому я пытался установить конфигурацию JNDI. Тем не менее, я получаю исключение, предполагающее, что существует проблема с classpath (вызвано: java.lang.NoClassDefFoundError: javax/mail/Authenticator). Вот мой код:

<Resource name="mail/Session" 
      auth="Container" 
      type="javax.mail.Session" 
      username="[email protected]" 
      password="Camp1onelcap" 
      mail.debug="true" 
      mail.user="[email protected]" 
      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). Может ли кто-нибудь указать мне в правильном направлении? Я действительно застрял здесь; это не похоже на трудную вещь, но я ясно доказываю это неправильно.

ответ

1

Если вы не размещаете mail.jar в каталоге lib Tomcat, где есть, вы его помещаете? Вы можете разместить его в WEB-INF/lib directory.

+0

Это файл войны. Это зависимость от maven, которая разрешена в пути класса Eclipse. –

+0

Вы уверены, что зависимость maven на самом деле приводит к тому, что она помещается в военный файл, а не просто используется во время компиляции? Вы зависите от Maven или Eclipse для развертывания военного файла? Если вы извлекаете военный файл и разворачиваете его вручную, это работает? –

0

Объявив ресурс, вы запрашиваете сервер для этого ресурса, в данном случае - подключение к почтовому серверу. Это сервер, который предоставляет ресурс, поэтому банки должны быть в пути к классам сервера, а не в веб-приложении (которое использует отдельный загрузчик классов).

Таким образом, javax.mail.jar должен быть в TOMCAT-HOME/lib.

Смежные вопросы