Com.sun.mail.handlers.text_plain cannot be attributed to javax.activation.DataContentHandler

I am upgrading from ColdFusion 8 to ColdFusion 9. I have a Java class that I call from CF that reads and parses the contents of an mbox mailbox file. The class works fine with CF 8, but it throws an error in CF 9. Error:

com.sun.mail.handlers.text_plain cannot be passed to javax.activation.DataContentHandler

The error occurs at the point where the Java code calls the getContent () function from javax.mail.internet.MimeMessage. Based on the MIME message type, I am returning the getContent () return value to one of String, MimeBodyPart, or Part.

Does anyone have any ideas how to fix this?

Here's my Java function:

public String getHtmlContent(Part p) throws IOException, MessagingException {
    StringBuffer szContent = new StringBuffer();
    if ( p.isMimeType("text/plain") ) 
    {
        szContent.append( contentToHtml( (String) p.getContent() ) );           
    }
    else if ( p.isMimeType("multipart/*") ) 
    {
        Multipart multipart = (Multipart) p.getContent();
        for ( int i = 0, n = multipart.getCount(); i < n; i++ ) {
            szContent.append( getHtmlContent((MimeBodyPart) multipart.getBodyPart( i )));               
        }
    }
    else if ( p.isMimeType("message/rfc822") ) 
    {
        szContent.append( getHtmlContent( (Part) p.getContent() ));             
    }
    else 
    {
        throw new RuntimeException( "Cannot determine message content." );
    }
    return szContent.toString();
}

      

And here's the Java stack trace:

javax.activation.MailcapCommandMap.getDataContentHandler (MailcapCommandMap.java:581) at javax.activation.MailcapCommandMap.createDataContentHandler (MailcapCommandMap.java:535) at javax.activation.CommandMap.HcreateData (javax.activation.CommandMap.HcreateData) at javax.activation.CommandMap.HcreateData .getDataContentHandler (DataHandler.java:594) at javax.activation.DataHandler.getContent (DataHandler.java:522) at javax.mail.internet.MimeMessage.getContent (MimeMessage.java:1395) at its.util.MBoxMessage.getHtmlContent MBoxMessage.java:166) at its.util.MBoxMessage.getHtmlContent (MBoxMessage.java:159) at sun.reflect.NativeMethodAccessorImpl.invoke0 (native method) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMetavahodAccessorImpl.invoke) .reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke (Method.java: 597) at coldfusion.runtime.StructBean.invoke (StructBean.java:502) at coldfusion.runtime.CfJspPage._invoke (CfJspPage.java:2393) at cfmessage2ecfm263917690.runatPage (\ webfm \ web course \ classlist \ message.cfm: 216) at coldfusion.runtime.CfJspPage.invoke (CfJspPage.java:231) at coldfusion.tagext.lang.IncludeTag.doStartTag (IncludeTag.java:416) at coldfusion.filter.CfincludeFilter.invoke (CfincludeFilter.java:65) at coldfusion.filter.ApplicationFilter.invoke (ApplicationFilter.java:363) at coldfusion.filter.MonitoringFilter.invoke (MonitoringFilter.java:40) at coldfusion.filter.PathFilter.invoke (PathFilter.PathFilter.invoke (PathFilter) 87) at coldfusion.filter.ExceptionFilter.invoke (ExceptionFilter.java:70) at coldfusion.filter.ClientScopePersistenceFilter.invoke (ClientScopePersistenceFilter.java:28) at coldfusion.filter.BrowserFilter.invoke (BrowserFilter.invoke38) at coldfusion.filter.NoCacheFilter.invoke (NoCacheFilter.java:46) at coldfusion.filter.GlobalsFilter.invoke (GlobalsFilter.java:38) at coldfusion.filter.DatasourceFilter.invoke (DatasourceFilter.java:46) filter.CachingFilter.invoke (CachingFilter.java:53) at coldfusion.CfmServlet.service (CfmServlet.java:200) at coldfusion.bootstrap.BootstrapServlet.service (BootstrapServlet.java:89) at jrun.Cervlet.Filter .java: 86) at com.intergral.fusionreactor.filter.FusionReactorFilter.B (Unknown source) at com.intergral.fusionreactor.filter.FusionReactorFilter.A (Unknown source) at com.intergral.fusionreactor.filter.FusionReactorFilter.B (Unknown source) Unknown Source) at jrun.servlet.FilterChain.doFilter (FilterChain.java:94) at coldfusion.monitor.event.MonitoringServletFilter.doFilter (MonitoringServletFilter.java:42) at coldfusion.bootstrap.BootstrapFilter.doFilter (BootstrapFilter.java:46) at jrun.servlet.FilterChain.doFilter (FilterChain.java:94) at jrun.servlet.FilterChain.service (FilterChain.java:101) servlet.ServletInvoker.invoke (ServletInvoker.java:106) at jrun.servlet.JRunInvokerChain.invokeNext (JRunInvokerChain.java:42) at jrun.servlet.JRunRequestDispatcher.invoke (JRun6RequestDispatcher.invoke (JRun6RequestDischer) (ServletEngineService.java:543) at jrun.servlet.jrpp.JRunProxyService.invokeRunnable (JRunProxyService.java:203) at jrunx.scheduler.ThreadPool $ DownstreamMetrics.invokeRunnable (Thread320) java:203) at Thread320.java. invokeRunnable (ThreadPool.java:428) at jrunx.scheduler.ThreadPool $ UpstreamMetrics.invokeRunnable (ThreadPool.java:266) at jrunx.scheduler.WorkerThread.run (WorkerThread.java:66)66)66)66)66)bootstrap.BootstrapFilter.doFilter (BootstrapFilter.java:46) at jrun.servlet.FilterChain.doFilter (FilterChain.java:94) at jrun.servlet.FilterChain.service (FilterChain.java:101.Servlet.servlet.servlet) (ServletInvoker.java:106) at jrun.servlet.JRunInvokerChain.invokeNext (JRunInvokerChain.java:42) at jrun.servlet.JRunRequestDispatcher.invoke (JRunRequestDispatcher.jrava:.286) at jrunRequestDispatcher.jrava:.286) at jrun.servlet.java. 543) at jrun.servlet.jrpp.JRunProxyService.invokeRunnable (JRunProxyService.java:203) at jrunx.scheduler.ThreadPool $ DownstreamMetrics.invokeRunnable (ThreadPool.java.thunnable.Threadnable.Runnable) at jrunx.scheava:320 at jrunx.scheava:320 : 428) at jrunx.scheduler.ThreadPool $ UpstreamMetrics.invokeRunnable (ThreadPool.java:266) at jrunx.scheduler.WorkerThread.run (WorkerThread.java:66)bootstrap.BootstrapFilter.doFilter (BootstrapFilter.java:46) at jrun.servlet.FilterChain.doFilter (FilterChain.java:94) at jrun.servlet.FilterChain.service (FilterChain.java:101.Servlet.servlet. (ServletInvoker.java:106) at jrun.servlet.JRunInvokerChain.invokeNext (JRunInvokerChain.java:42) at jrun.servlet.JRunRequestDispatcher.invoke (JRunRequestDispatcher.jrava:.286) at jrunRequestDispatcher.jrava:.286) at jrun.servlet.java. 543) at jrun.servlet.jrpp.JRunProxyService.invokeRunnable (JRunProxyService.java:203) at jrunx.scheduler.ThreadPool $ DownstreamMetrics.invokeRunnable (ThreadPool.java.thunnable.Threadnable.Runnable) at jrunx.scheava:320 at jrunx.scheava:320 : 428) at jrunx.scheduler.ThreadPool $ UpstreamMetrics.invokeRunnable (ThreadPool.java:266) at jrunx.scheduler.WorkerThread.run (WorkerThread.java:66)BootstrapFilter.doFilter (BootstrapFilter.java:46) at jrun.servlet.FilterChain.doFilter (FilterChain.java:94) at jrun.servlet.FilterChain.service (FilterChain.java:101) at jrun.servlet.Servlet .java: 106) at jrun.servlet.JRunInvokerChain.invokeNext (JRunInvokerChain.java:42) at jrun.servlet.JRunRequestDispatcher.invoke (JRunRequestDispatcher.java:286) at jrunEservinecret.Servlet at jrun.servlet.jrpp.JRunProxyService.invokeRunnable (JRunProxyService.java:203) at jrunx.scheduler.ThreadPool $ DownstreamMetrics.invokeRunnable (ThreadPool.java:320) at jrunx.scheduler $ DownstreamMetrics.invokeRunnable (ThreadPool.java:320) at jrunx.scheduler. ) to jrunx.scheduler.ThreadPool $ UpstreamMetrics.invokeRunnable (ThreadPool.java:266) to jrunx.scheduler.WorkerThread.run (WorkerThread.java:66)BootstrapFilter.doFilter (BootstrapFilter.java:46) at jrun.servlet.FilterChain.doFilter (FilterChain.java:94) at jrun.servlet.FilterChain.service (FilterChain.java:101) at jrun.servlet.Servlet .java: 106) at jrun.servlet.JRunInvokerChain.invokeNext (JRunInvokerChain.java:42) at jrun.servlet.JRunRequestDispatcher.invoke (JRunRequestDispatcher.java:286) at jrunEservinecret.Servlet at jrun.servlet.jrpp.JRunProxyService.invokeRunnable (JRunProxyService.java:203) at jrunx.scheduler.ThreadPool $ DownstreamMetrics.invokeRunnable (ThreadPool.java:320) at jrunx.scheduler $ DownstreamMetrics.invokeRunnable (ThreadPool.java:320) at jrunx.scheduler. ) to jrunx.scheduler.ThreadPool $ UpstreamMetrics.invokeRunnable (ThreadPool.java:266) to jrunx.scheduler.WorkerThread.run (WorkerThread.java:66)java: 46) at jrun.servlet.FilterChain.doFilter (FilterChain.java:94) at jrun.servlet.FilterChain.service (FilterChain.java:101) at jrun.servlet.ServletInvoker.invoke (ServletInvoker.java:106) at jrun.servlet.JRunInvokerChain.invokeNext (JRunInvokerChain.java:42) at jrun.servlet.JRunRequestDispatcher.invoke (JRunRequestDispatcher.java:286) at jrun.servlet.ServletEngineService (jrun.servlet.ServletEngineService) .JRunProxyService.invokeRunnable (JRunProxyService.java:203) at jrunx.scheduler.ThreadPool $ DownstreamMetrics.invokeRunnable (ThreadPool.java:320) at jrunx.scheduler.ThreadPool: ThreadRunheduler.invava:203 ThreadPool $ UpstreamMetrics.invokeRunnable (ThreadPool.java:266) at jrunx.scheduler.WorkerThread.run (WorkerThread.java:66)java: 46) at jrun.servlet.FilterChain.doFilter (FilterChain.java:94) at jrun.servlet.FilterChain.service (FilterChain.java:101) at jrun.servlet.ServletInvoker.invoke (ServletInvoker.java:106) at jrun.servlet.JRunInvokerChain.invokeNext (JRunInvokerChain.java:42) at jrun.servlet.JRunRequestDispatcher.invoke (JRunRequestDispatcher.java:286) at jrun.servlet.ServletEngineService (JRunRequestDispatcher.java:286) at jrun.servlet.ServletEngineService (jrun.servlet.ServletEngineService) .JRunProxyService.invokeRunnable (JRunProxyService.java:203) at jrunx.scheduler.ThreadPool $ DownstreamMetrics.invokeRunnable (ThreadPool.java:320) at jrunx.scheduler.ThreadPool: ThreadRunheduler.invava:203 ThreadPool $ UpstreamMetrics.invokeRunnable (ThreadPool.java:266) at jrunx.scheduler.WorkerThread.run (WorkerThread.java:66)servlet.FilterChain.service (FilterChain.java:101) at jrun.servlet.ServletInvoker.invoke (ServletInvoker.java:106) at jrun.servlet.JRunInvokerChain.invokeNext (JRunInvokerChain.junJava:42) at jrunInvokerChain.junJava:42) (JRunRequestDispatcher.java:286) at jrun.servlet.ServletEngineService.dispatch (ServletEngineService.java:543) at jrun.servlet.jrpp.JRunProxyService.invokeRunnable (JRunProxyService.invokeRunnable (JRunProxyService ).java:20 ThreadPool.java:320) at jrunx.scheduler.ThreadPool $ ThreadThrottle.invokeRunnable (ThreadPool.java:428) at jrunx.scheduler.ThreadPool $ UpstreamMetrics.invokeRunnable (ThreadPool.java:266) at Worker.java:266 .java: 66)servlet.FilterChain.service (FilterChain.java:101) at jrun.servlet.ServletInvoker.invoke (ServletInvoker.java:106) at jrun.servlet.JRunInvokerChain.invokeNext (JRunInvokerChain.junJava:42) at jrunInvokerChain.junJava:42) (JRunRequestDispatcher.java:286) at jrun.servlet.ServletEngineService.dispatch (ServletEngineService.java:543) at jrun.servlet.jrpp.JRunProxyService.invokeRunnable (JRunProxyService.invokeRunnable (JRunProxyService) .java:20 ThreadPool.java:320) at jrunx.scheduler.ThreadPool $ ThreadThrottle.invokeRunnable (ThreadPool.java:428) at jrunx.scheduler.ThreadPool $ UpstreamMetrics.invokeRunnable (ThreadPool.java:266) at Worker.java:266 .java: 66)(invokeNext (JRunInvokerChain.java:42) at jrun.servlet.JRunRequestDispatcher.invoke (JRunRequestDispatcher.java:286) at jrun.servlet.ServletEngineService.dispatch (ServunletEngineProxyProxyJava.pp.) .java: 203) at jrunx.scheduler.ThreadPool $ DownstreamMetrics.invokeRunnable (ThreadPool.java:320) at jrunx.scheduler.ThreadPool $ ThreadThrottle.invokeRunnable (ThreadPool.java:428) at jrunx.readscheduler.invokeRunnable ThreadPool.java:266) at jrunx.scheduler.WorkerThread.run (WorkerThread.java:66)(invokeNext (JRunInvokerChain.java:42) at jrun.servlet.JRunRequestDispatcher.invoke (JRunRequestDispatcher.java:286) at jrun.servlet.ServletEngineService.dispatch (ServunletEngineProxyProxyJava.pp.) .java: 203) at jrunx.scheduler.ThreadPool $ DownstreamMetrics.invokeRunnable (ThreadPool.java:320) at jrunx.scheduler.ThreadPool $ ThreadThrottle.invokeRunnable (ThreadPool.java:428) at jrunx.readscheduler.invokeRunnable ThreadPool.java:266) at jrunx.scheduler.WorkerThread.run (WorkerThread.java:66)ThreadPool $ DownstreamMetrics.invokeRunnable (ThreadPool.java:320) at jrunx.scheduler.ThreadPool $ ThreadThrottle.invokeRunnable (ThreadPool.java:428) at jrunx.scheduler.ThreadPool $ UpunstreamMetrics.invoke.java:320 .WorkerThread.run (WorkerThread.java:66)ThreadPool $ DownstreamMetrics.invokeRunnable (ThreadPool.java:320) at jrunx.scheduler.ThreadPool $ ThreadThrottle.invokeRunnable (ThreadPool.java:428) at jrunx.scheduler.ThreadPool $ UpunstreamMetrics.invoke.java:320 .WorkerThread.run (WorkerThread.java:66)

+1


source to share


3 answers


I have removed activation.jar file from CF lib folder. The javax.activation classes are duplicated in jrun.jar and both JAR files are in the CF class path. It looks like the classes are newer in activ.jar, but removing them did the trick for the custom class. Hopefully nothing in CF relies on the new classes.



0


source


This sounds like a classloader problem. Sometimes a ClassCastException like this is thrown from an object's source class (com.sun.mail.handlers.text_plain) coming from one classloader and a target class (DataContentHandler) coming from another. Even though the classes are identical, jvm discovers that they belong to different class loaders, thus refusing to throw. The error message in this case is not very informative.

This could be due to a mix of jars, perhaps one version of JavaMail in your webapp folder and another in <jdk_home> / jre / lib / approved or something.



  • I'm not familiar with ColdFusion, so this is just a guess, but did the update also include the jdk update?
  • Has anything changed in the class loader hierarchy? Perhaps the parent first or last webapps policy (for example, supported in Weblogic and WebSphere)?
  • Where are your JavaMail and Activation banks? Do you have these jars in your webapp?
+4


source


If it's a Maven project, try searching for mail libraries and exclude the wrong jar if possible.

I also had a problem loading a class with the Geronimo mail library; this was allowed when I dropped this jar into mine pom.xml

.

<exclusions>
<exclusion>
    <artifactId>geronimo-javamail_1.4_spec</artifactId>
    <groupId>org.apache.geronimo.specs</groupId>
</exclusion>
</exclusions>

      

0


source







All Articles