Hi,

SMX Bundles release is expected by the end of this week.

Regards
JB

On 31/01/2019 14:09, Siano, Stephan wrote:
> Hi Jean-Baptiste,
> 
> Thanks a lot! At least in theory this should work. Do you have an idea when 
> this will be released?
> 
> Just out of curiosity: Is this related to the upcoming Karaf 4.2.3 release or 
> is that completely unrelated?
> 
> Best regards
> Stephan 
> 
> -----Original Message-----
> From: Jean-Baptiste Onofré <j...@nanthrax.net> 
> Sent: Donnerstag, 31. Januar 2019 13:44
> To: dev@karaf.apache.org
> Subject: Re: Interdependencies between SAAJ, Activation, and javamail on 
> karaf 4.2.3/karaf 4.2.2
> 
> Hi Stephen,
> 
> I'm also planning to release saaj-impl 1.4.x bundle with a version
> range, I guess it will help.
> 
> Regards
> JB
> 
> On 31/01/2019 13:30, Siano, Stephan wrote:
>> Hi,
>>
>> We are building a custom distribution currently based on Karaf 4.2.2 (but 
>> including some changes from Karaf 4.2.3) which is running on Java 8. We have 
>> observed that once we are sending a SOAP message with attachments via CXF, 
>> javamail will stop working.
>>
>> The root cause for this was the following.
>>
>> With the changes from [KARAF-5989] and [KARAF-6093] the javax.activation and 
>> the javax.xml.soap are removed from the Java 8 section from jre.properties.
>>
>> As a consequence the bundles 
>> org.apache.servicemix.specs:org.apache.servicemix.specs.activation-api-1.1:2.9.0
>>  and org.apache.servicemix.specs: 
>> org.apache.servicemix.specs.saaj-api-1.3:2.9.0 are installed in the stack. 
>> In order to make CXF work the bundle 
>> org.apache.servicemix.bundles:org.apache.servicemix.bundles.saaj-impl:1.3.28_1
>>  is also added to the stack.
>>
>> The servicemix wrapped activation api bundle has an OSGi enabled registry 
>> for MIME DataTypeHandlers, where javamail registers some data type handlers 
>> (among others for text/plain via mailcap file). In addition javamail wires 
>> the javax.activation package wth this bundle. So far everything works.
>>
>> Unfortunately the constructor of 
>> com.sun.xml.messaging.saaj.soap.AttachmentPartImpl contained in the 
>> saaj-impl bundle (in version 1.3.28_1) registers 
>> com.sun.xml.internal.messaging.saaj.soap.StringDataContentHandler as a data 
>> content handler for text/plain. This class is coming from the JDK and 
>> implements javax.activation.DataContentHandler from JDK. If after this 
>> registration javamail tries to look up a DataContentHandler for text/plain, 
>> the registry in the javax.activation api bundle will contain that handler 
>> but as the bundles has its own version of 
>> javax.activationDataContentHandler, we will get a ClassCastException:
>>
>> java.lang.ClassCastException - 
>> com.sun.xml.internal.messaging.saaj.soap.StringDataContentHandler cannot be 
>> cast to javax.activation.DataContentHandler (loaded by 
>> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader@0x0000000100162fd8)
>>  (found matching interface javax.activation.DataContentHandler loaded by , 
>> but needed loader 
>> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader@0x0000000100162fd8)]java.lang.ClassCastException:
>>  com.sun.xml.internal.messaging.saaj.soap.StringDataContentHandler cannot be 
>> cast to javax.activation.DataContentHandler (loaded by 
>> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader@0x0000000100162fd8)
>>  (found matching interface javax.activation.DataContentHandler loaded by , 
>> but needed loader 
>> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader@0x0000000100162fd8)
>>     at 
>> com.sap.esb.activation.impl.OsgiMailcapCommandMap.createDataContentHandler(OsgiMailcapCommandMap.java:179)
>>     at 
>> javax.activation.DataHandler.getDataContentHandler(DataHandler.java:249)
>>     at javax.activation.DataHandler.getContent(DataHandler.java:142)
>>     at javax.mail.internet.MimeMessage.getContent(MimeMessage.java:1454)
>>     at 
>> org.apache.camel.component.mail.MailBinding.extractHeadersFromMail(MailBinding.java:601)
>>
>> The culprit seems to be the saaj-impl bundle. So I looked for newer version. 
>> There is a version 1.4.0_1 that is actually registering DataContentHandlers 
>> like
>> com.sun.xml.messaging.saaj.soap.StringDataContentHandler (without the 
>> internal), which is instead coming from the saaj-api bundle (which wires 
>> with the javax.activation bundle in the stack), so this should work. 
>> Unfortunately the version 1.4.0 imports package version 1.4 or later of 
>> package javax.xml.soap, whereas the saaj-api-1.3 bundle is exporting version 
>> 1.3 of that package.
>>
>> Yesterday Jean Baptiste Onofré added version 1.5.1_1-SNAPSHOT to the 
>> servicemix bundles repository, though I don't know why he did so and when he 
>> plans to release that version.
>>
>> Are you already aware of this or is this change not related to the Karaf 
>> 4.2.3 release at all?
>>
>> Does anyone know any combination of saaj/saaj-impl OSGi bundles that work 
>> with Java 8 on Karaf?
>>
>> Best regards
>> Stephan
>>
> 

-- 
Jean-Baptiste Onofré
jbono...@apache.org
http://blog.nanthrax.net
Talend - http://www.talend.com

Reply via email to