Tomcat 6 Javax.mail сеанс envCtx.lookup ("mail / Session") не возвращается - PullRequest
1 голос
/ 02 апреля 2011

Я использую Tomcat 6 для отправки почтового клиента с API Javax.mail, я настроил свои конфигурации в server.xml, как показано ниже

<Resource name="mail/Session" auth="Container"
            type="javax.mail.Session"
            mail.smtp.host="localhost"/>

И в моем файле web.xml, как показано ниже

<resource-ref>
    <description>Resource reference to a container-managed JNDI JavaMail factory for sending e-mails.</description>
    <res-ref-name>mail/Session</res-ref-name>
    <res-type>javax.mail.Session</res-type>
    <res-auth>Container</res-auth>
</resource-ref>

Но когда я пытался создать почтовый сеанс ... используя context.lookup

ontext initCtx = new InitialContext();
            Context envCtx = (Context) initCtx.lookup("java:comp/env");
            *mailSession = (Session)envCtx.lookup("mail/Session");*

Вызов nvCtx.lookup ("mail / Session");не возвращается .... он идет и ломается в org / springframework / jms / listener / DefaultMessageListenerContainer ...

Любые подсказки .... Я ценю любую помощь.

Спасибо Виджай

Ответы [ 2 ]

2 голосов
/ 19 января 2012

Поскольку Spring вы не используете, используйте это:

Источник: Документация Apache Tomcat 6.0 - ресурсы JDNI

Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
Session session = (Session) envCtx.lookup("mail/Session");

Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(request.getParameter("from")));
InternetAddress to[] = new InternetAddress[1];
to[0] = new InternetAddress(request.getParameter("to"));
message.setRecipients(Message.RecipientType.TO, to);
message.setSubject(request.getParameter("subject"));
message.setContent(request.getParameter("content"), "text/plain");
Transport.send(message);
0 голосов
/ 16 июня 2011

Ваша конфигурация выглядит нормально, может вам понадобится сначала очистить сервер (если вы используете eclipse).

В любом случае: если вы используете spring, то вы можете использовать Spring Framwork для доступа к ресурсу JNDI:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:jee="http://www.springframework.org/schema/jee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/jee
    http://www.springframework.org/schema/jee/spring-jee-3.0.xsd">

    <jee:jndi-lookup id="jndiEmailSession"
         jndi-name="java:comp/env/email/Session" />
</beans>
...