You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Huanyuan Sheng <hy...@hotmail.com> on 2012/03/25 05:02:41 UTC

Tomcat 6.0.24 java emailing configuration problem

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

 


RE: Tomcat 6.0.24 java emailing configuration problem

Posted by Huanyuan Sheng <hy...@hotmail.com>.
Hi,

I finally figured out what went wrong. There is a third party .jar file under application/WEB-INF/lib. That jar file also contains javax.mail class. 

Thanks for your help.

Wayne

-----Original Message-----
From: Pid * [mailto:pid@pidster.com] 
Sent: Sunday, March 25, 2012 3:47 AM
To: Tomcat Users List
Subject: Re: Tomcat 6.0.24 java emailing configuration problem

On 25 Mar 2012, at 04:03, Huanyuan Sheng <hy...@hotmail.com> wrote:

> 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.

This is usually indicative of a classpath error - meaning that you have the class specified in two places on the classpath and Tomcat is selecting one of each, rather than the same one.

The fact that you have symlinked jars all over the place is probably not helping.

Download & install a fresh version from tomcat.apache.org and start over.

Make sure only one version of mail.jar exists in tomcat/lib and not anywhere else.


p

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Re: Tomcat 6.0.24 java emailing configuration problem

Posted by Pid * <pi...@pidster.com>.
On 25 Mar 2012, at 04:03, Huanyuan Sheng <hy...@hotmail.com> wrote:

> 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.

This is usually indicative of a classpath error - meaning that you
have the class specified in two places on the classpath and Tomcat is
selecting one of each, rather than the same one.

The fact that you have symlinked jars all over the place is probably
not helping.

Download & install a fresh version from tomcat.apache.org and start over.

Make sure only one version of mail.jar exists in tomcat/lib and not
anywhere else.


p

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org