You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@servicemix.apache.org by "Freeman Fang (Commented) (JIRA)" <ji...@apache.org> on 2012/03/20 01:57:37 UTC

[jira] [Commented] (SM-2149) ClassCastException in OsgiMailcapCommandMap

    [ https://issues.apache.org/jira/browse/SM-2149?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13233069#comment-13233069 ] 

Freeman Fang commented on SM-2149:
----------------------------------

Hi Andrew,

Thanks for the patch.

But I think the root cause is that you shouldn't use DataContentHandler from pax-web-jetty-bundle.
I just check the pax-web-jetty-bundle code, it doesn't export javax.activation package from the OSGi metadata header, so I believe your customer bundle embed the pax-web-jetty-bundle, right? 
If so, you shouldn't use the embed way, you should install all necessary bundles in OSGi container and import necessary package in your bundle, otherwise you will encounter lots of ClassCastException issues which is caused by different classloader.

Freeman
                
> ClassCastException in OsgiMailcapCommandMap
> -------------------------------------------
>
>                 Key: SM-2149
>                 URL: https://issues.apache.org/jira/browse/SM-2149
>             Project: ServiceMix
>          Issue Type: Bug
>          Components: servicemix-mail
>         Environment: $ java -version
> java version "1.6.0_30"
> Java(TM) SE Runtime Environment (build 1.6.0_30-b12)
> Java HotSpot(TM) 64-Bit Server VM (build 20.5-b03, mixed mode)
> Slackware 13.37 64 bit
> Linux 2.6.38.4 x86_64
>            Reporter: Andrew Clemons
>            Priority: Minor
>         Attachments: 01_servicemix_activation.diff, stack_trace
>
>
> I am using the service mix javax.activation and javax.mail bundles:
>       <dependency>
>         <groupId>org.apache.servicemix.bundles</groupId>
>         <artifactId>org.apache.servicemix.bundles.javax.mail</artifactId>
>         <version>1.4.1_5</version>
>       </dependency>
>       <dependency>
>         <groupId>org.apache.servicemix.specs</groupId>
>         <artifactId>org.apache.servicemix.specs.activation-api-1.1</artifactId>
>         <version>1.9.0</version>
>       </dependency>
> For various reasons I am also using:
>       <dependency>
>         <groupId>org.ops4j.pax.web</groupId>
>         <artifactId>pax-web-jetty-bundle</artifactId>
>         <version>1.1.2</version>
>       </dependency>
> That bundle includes java-mail and activation as part of the bundle itself and
> also includes a mailcap file. The
> org.apache.servicemix.specs.activation.Activator picks that up and adds the
> mailcap entries to the OsgiMailcapCommandMap.
> $ unzip -q -c pax-web-jetty-bundle-1.1.2.jar  META-INF/mailcap
> #
> # @(#)mailcap   1.8 05/04/20
> #
> # Default mailcap file for the JavaMail System.
> #
> # JavaMail content-handlers:
> #
> text/plain;;            x-java-content-handler=com.sun.mail.handlers.text_plain
> text/html;;             x-java-content-handler=com.sun.mail.handlers.text_html
> text/xml;;              x-java-content-handler=com.sun.mail.handlers.text_xml
> multipart/*;;           x-java-content-handler=com.sun.mail.handlers.multipart_mixed; x-java-fallback-entry=true
> message/rfc822;;        x-java-content-handler=com.sun.mail.handlers.message_rfc822
> #
> # can't support image types because java.awt.Toolkit doesn't work on servers
> #
> #image/gif;;            x-java-content-handler=com.sun.mail.handlers.image_gif
> #image/jpeg;;           x-java-content-handler=com.sun.mail.handlers.image_jpeg
> When I then try to send a multipart email, the DataContentHandler comes from
> the pax-web-jetty-bundle, but that instance comes from its classloader and is
> not assignable to the DataContentHandler as seen by the
> org.apache.servicemix.specs.activation-api-1.1 bundle. This results in a
> ClassCastException on line 60 in OsgiMailcapCommandMap which propagates up the
> call stack.
> I'll attached a patch which fixes the problem for me and an example stack
> trace.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira