I am trying to configure javax.mail for our application running under 

Servlet Engine: 2.5

JSP Engine: 2.1

Application Server: Apache Tomcat/6.0.24 

 

But emailing never works. The smtp server is up and running on the server.
We can send email via the command line from localhost. 

 

Please help.

 

Our system is running on Red Hat Enterprise Linux Server release 6.2
(Santiago) Linux xxx.xxx.xxx 2.6.32-220.4.2.el6.x86_64 #1 SMP Mon Feb 6
16:39:28 EST 2012 x86_64 x86_64 x86_64 GNU/Linux

 

 

 

############################################################################
#######################################

 

 

############################################################################
#######################################

 

 

This is the conf file:

Context.xml:

<Resource name="mail/Session" auth="Container"

             type="javax.mail.Session"

             mail.smtp.host="localhost"/>

                                             

 

 

############################################################################
#######################################

 

 

Here is the result of 'find / -name '*mail*.jar'.

/usr/lib64/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/lib/ant-javam
ail.jar

/usr/share/java/classpathx-mail-1.3.1-monolithic.jar

/usr/share/java/ant/ant-javamail.jar

/usr/share/java/ant/ant-javamail-1.7.1.jar

/usr/share/java/classpathx-mail-1.3.1-monolithic-1.1.1.jar

/usr/share/java/javamail.jar

/usr/share/java/classpathx-mail/mail-1.3.1-api.jar

/usr/share/java/classpathx-mail/mailapi.jar

/usr/share/java/classpathx-mail/mail-1.3.1-providers-1.1.1.jar

/usr/share/java/classpathx-mail/mail-1.3.1-providers.jar

/usr/share/java/classpathx-mail/mail-1.3.1-api-1.1.1.jar

/usr/share/java/tomcat6/mail.jar

/usr/share/ant/lib/ant-javamail.jar

 

 

I don't have any mail.jar under the $TOMCAT_BASE/webapps/MyApps/WEB-INF/lib

 

 

############################################################################
#######################################

 

 

Here is the list files under tomcat6/lib 

-rw-r--r--.  1 root root   15153 Nov 30 11:27 annotations-api-6.0.24.jar

lrwxrwxrwx.  1 root root      26 Mar 15 10:58 annotations-api.jar ->
annotations-api-6.0.24.jar

-rw-r--r--.  1 root root 1212081 Nov 30 11:27 catalina-6.0.24.jar

-rw-r--r--.  1 root root   54149 Nov 30 11:27 catalina-ant-6.0.24.jar

lrwxrwxrwx.  1 root root      23 Mar 15 10:58 catalina-ant.jar ->
catalina-ant-6.0.24.jar

-rw-r--r--.  1 root root  130751 Nov 30 11:27 catalina-ha-6.0.24.jar

lrwxrwxrwx.  1 root root      22 Mar 15 10:58 catalina-ha.jar ->
catalina-ha-6.0.24.jar

lrwxrwxrwx.  1 root root      19 Mar 15 10:58 catalina.jar ->
catalina-6.0.24.jar

-rw-r--r--.  1 root root  235744 Nov 30 11:27 catalina-tribes-6.0.24.jar

lrwxrwxrwx.  1 root root      26 Mar 15 10:58 catalina-tribes.jar ->
catalina-tribes-6.0.24.jar

lrwxrwxrwx.  1 root root      37 Mar 21 15:18 commons-beanutils.jar ->
/usr/share/java/commons-beanutils.jar

lrwxrwxrwx.  1 root root      39 Mar 15 10:58 commons-collections.jar ->
/usr/share/java/commons-collections.jar

lrwxrwxrwx.  1 root root      32 Mar 15 10:58 commons-dbcp.jar ->
/usr/share/java/commons-dbcp.jar

lrwxrwxrwx.  1 root root      32 Mar 15 10:58 commons-pool.jar ->
/usr/share/java/commons-pool.jar

-rw-r--r--.  1 root root  533217 Nov 30 11:27 jasper-6.0.24.jar

-rw-r--r--.  1 root root  108903 Nov 30 11:27 jasper-el-6.0.24.jar

lrwxrwxrwx.  1 root root      20 Mar 15 10:58 jasper-el.jar ->
jasper-el-6.0.24.jar

lrwxrwxrwx.  1 root root      17 Mar 15 10:58 jasper.jar ->
jasper-6.0.24.jar

lrwxrwxrwx.  1 root root      23 Mar 15 10:58 jasper-jdt.jar ->
/usr/share/java/ecj.jar

lrwxrwxrwx.  1 root root      25 Mar 15 10:58 log4j.jar ->
/usr/share/java/log4j.jar

-rw-r--r--.  1 root root  494975 Mar 24 08:21 mail.jar

lrwxrwxrwx.  1 root root      33 Mar 15 10:58 mx4j-jmx.jar ->
/usr/share/java/mx4j/mx4j-jmx.jar

lrwxrwxrwx.  1 root root      36 Mar 15 10:58 mx4j-remote.jar ->
/usr/share/java/mx4j/mx4j-remote.jar

lrwxrwxrwx.  1 root root      44 Mar 19 20:56 ojdbc6.jar ->
/usr/lib/oracle/11.2/client64/lib/ojdbc6.jar

lrwxrwxrwx.  1 root root      32 Mar 15 10:58 tomcat6-el-2.1-api-6.0.24.jar
-> ../tomcat6-el-2.1-api-6.0.24.jar

lrwxrwxrwx.  1 root root      33 Mar 15 10:58 tomcat6-jsp-2.1-api-6.0.24.jar
-> ../tomcat6-jsp-2.1-api-6.0.24.jar

lrwxrwxrwx.  1 root root      37 Mar 15 10:58
tomcat6-servlet-2.5-api-6.0.24.jar -> ../tomcat6-servlet-2.5-api-6.0.24.jar

-rw-r--r--.  1 root root  768615 Nov 30 11:26 tomcat-coyote-6.0.24.jar

lrwxrwxrwx.  1 root root      24 Mar 15 10:58 tomcat-coyote.jar ->
tomcat-coyote-6.0.24.jar

-rw-r--r--.  1 root root   69826 Nov 30 11:27 tomcat-i18n-es-6.0.24.jar

lrwxrwxrwx.  1 root root      25 Mar 15 10:58 tomcat-i18n-es.jar ->
tomcat-i18n-es-6.0.24.jar

-rw-r--r--.  1 root root   51772 Nov 30 11:27 tomcat-i18n-fr-6.0.24.jar

lrwxrwxrwx.  1 root root      25 Mar 15 10:58 tomcat-i18n-fr.jar ->
tomcat-i18n-fr-6.0.24.jar

-rw-r--r--.  1 root root   54441 Nov 30 11:26 tomcat-i18n-ja-6.0.24.jar

lrwxrwxrwx.  1 root root      25 Mar 15 10:58 tomcat-i18n-ja.jar ->
tomcat-i18n-ja-6.0.24.jar

-rw-r--r--.  1 root root   22926 Mar 20 14:24 tomcat-juli-adapters.jar

lrwxrwxrwx.  1 root root      38 Mar 15 10:58 tomcat-juli.jar ->
/usr/share/tomcat6/bin/tomcat-juli.jar

 

The mail.jar comes from JavaMail 1.4.4

 

############################################################################
#######################################

 

Here is the source java code that sends out email:

...

Context initCtx = new InitialContext();

         Context envCtx = (Context) initCtx.lookup("java:comp/env");

         Session mSession = (Session) envCtx.lookup("mail/Session"); 

                               

Based on my logging information, the code breaks right at the last line
--->Session mSession = (Session) envCtx.lookup("mail/Session");

                              

############################################################################
#######################################

 

 

When I run the application the server gives the following error:

  javax.mail.Session cannot be cast to javax.mail.Session.

No email is sent.

 

############################################################################
#######################################

 

If I remove mail.jar, then the application is broken and root cause is:

 

javax.servlet.ServletException: java.lang.NoClassDefFoundError:
javax/mail/Authenticator

 
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextI
mpl.java:862)

 
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImp
l.java:791)

               org.apache.jsp.index_jsp._jspService(index_jsp.java:149)

 
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

               javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:3
77)

 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)

 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)

               javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

 

root cause

 

java.lang.NoClassDefFoundError: javax/mail/Authenticator

 
org.apache.naming.factory.MailSessionFactory.getObjectInstance(MailSessionFa
ctory.java:105)

 
org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.
java:140)

 
javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321)

 
org.apache.naming.NamingContext.lookup(NamingContext.java:793)

 
org.apache.naming.NamingContext.lookup(NamingContext.java:140)

 
org.apache.naming.NamingContext.lookup(NamingContext.java:781)

 
org.apache.naming.NamingContext.lookup(NamingContext.java:153)

               ....

               

               org.apache.jsp.index_jsp._jspService(index_jsp.java:137)

 
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

               javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:3
77)

 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)

 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)

               javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

 

root cause

 

java.lang.ClassNotFoundException: javax.mail.Authenticator

               java.net.URLClassLoader$1.run(URLClassLoader.java:217)

               java.security.AccessController.doPrivileged(Native Method)

               java.net.URLClassLoader.findClass(URLClassLoader.java:205)

               java.lang.ClassLoader.loadClass(ClassLoader.java:321)

               java.lang.ClassLoader.loadClass(ClassLoader.java:266)

 
org.apache.naming.factory.MailSessionFactory.getObjectInstance(MailSessionFa
ctory.java:105)

 
org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.
java:140)

 
javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321)

 
org.apache.naming.NamingContext.lookup(NamingContext.java:793)

 
org.apache.naming.NamingContext.lookup(NamingContext.java:140)

 
org.apache.naming.NamingContext.lookup(NamingContext.java:781)

 
org.apache.naming.NamingContext.lookup(NamingContext.java:153)

               .....

               

               org.apache.jsp.index_jsp._jspService(index_jsp.java:137)

 
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

               javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:3
77)

 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)

 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)

               javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

 

 

 

############################################################################
#######################################

 

I am guessing that classloading must have included some javax.mail somewhere
which conflicts with mail.jar under tomcat6/lib.

 

 

Please give me some suggestions.

 

Thanks,

 

Wayne

 

Reply via email to