On 20/06/2012 13:26, Bob Lannoy wrote:

Hi,

I'm using the notification system and it happily sends emails in its own container (tomcat 6). However, we've deployed syncope on a tomcat container together with another webapp that uses the javamail jar from Sun. When syncope is the first one to send emails, the other app can't send any since it looks for handler classes associated with the mime-type of the email to send. When the other app is first to send an email (after a server restart) it succeeds, but then syncope fails to send an email, stating it can't find com.sun.* classes related to the mime-type.

The exception is:

org.apache.geronimo.javamail.transport.smtp.SMTPSendFailedException: Send failure (javax.mail.MessagingException: javax.activation.UnsupportedDataTypeException: no object DCH for MIME type multipart/mixed;

On this web page (http://blog.hpxn.net/2009/12/02/tomcat-java-6-and-javamail-cant-load-dch/) there is some info on the problem. When I put the activation debugging on I get the underlying exception:

Can't load DCH com.sun.mail.handlers.multipart_mixed; Exception: java.lang.ClassNotFoundException: com/sun/mail/handlers/multipart_mixed.

It seems that the activation framework loads the mimetype list and the associated classes once for both webapps.

The working solution at the moment is to delete the geronimo javamail libraries in syncope and put in the javamail library from the other app. Anyone seen this behaviour?


Hi Bob,
I haven't encountered the problem you describe above but it - unfortunately - sounds more than logical to me :(

As you suggest, the problem derives from an incompatibility between "stock" mail.jar and activation.jar and the ones that are shipped by default with Syncope, from Geronimo.

Probably the cleanest solution that comes into my mind is:

1. set the Geronimo mail deps as 'provided' in your project core's POM: this will avoid these two JAR files to be included in your core WAR package

    <dependency>
      <groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-javamail_1.4_spec</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.geronimo.javamail</groupId>
<artifactId>geronimo-javamail_1.4_provider</artifactId>
      <scope>provided</scope>
    </dependency>

2. add "stock" activation.jar in your external Tomcat's classpath (mail.jar should already be in $CATALINA_HOME/lib)

How do you see this?

Regards.

--
Francesco Chicchiriccò

ASF Member, Apache Cocoon PMC and Apache Syncope PPMC Member
http://people.apache.org/~ilgrosso/

Reply via email to