You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commons-dev@ws.apache.org by Arjen Poutsma <ar...@springsource.com> on 2008/07/03 22:17:22 UTC

[AXIOM] Issues with writing SwA Attachments

Hi,

I've been having some issues with Axiom's SOAP with Attachments'  
support. Here's what I try to do, more or less:

   SOAPMessage message = ... // an Axiom SOAP message
   Attachments attachments = ... // an Axiom attachment instance with  
some attachments in it
   OMOutputFormat format = new OMOutputFormat();
   format.setCharSetEncoding(message.getCharsetEncoding());
   format.setSOAP11(true);
   format.setDoingSWA(true);
   StringWriter writer = new StringWriter();
   axiomMessage.getSOAPEnvelope().serialize(writer, format);
   MIMEOutputUtils.writeSOAPWithAttachmentsMessage(writer,  
outputStream, attachments, format);

Ignoring for a moment the hoops I have to jump through (writing the  
message to a StringWriter ?!?), running this code will give me the  
following stacktrace:

java.io.IOException: Invalid content type "text/xml; charset=UTF-8"  
for XmlDCH
	at  
com 
.sun 
.xml 
.internal 
.messaging 
.saaj.soap.XmlDataContentHandler.writeTo(XmlDataContentHandler.java:106)
	at javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java: 
868)
	at javax.activation.DataHandler.writeTo(DataHandler.java:301)
	at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:452)
	at  
org 
.apache 
.axiom.om.impl.MIMEOutputUtils.writeBodyPart(MIMEOutputUtils.java:245)
	at  
org 
.apache 
.axiom 
.om 
.impl 
.MIMEOutputUtils.writeSOAPWithAttachmentsMessage(MIMEOutputUtils.java: 
283)
	... 33 more

This is on Mac OS X, JDK 1.6.

After some decompiling of the JDK, it seems to be related to the built  
in DataHandler for XML not being able to handle the charset part of  
the content-type; it can only handle the exact strings "text/xml" or  
"application/xml". Wrong, I know, but since I don't have commit-access  
to the JDK I am more-or-less stuck with it as is.

Am I doing something wrong, or should I file a JIRA for this?

Thanks,

Arjen
---
Arjen Poutsma
Senior Software Engineer, SpringSource
Spring Web Services Lead
E: arjen.poutsma@springsource.com
W: www.springsource.com
B: blog.springsource.com/arjen






Re: [AXIOM] Issues with writing SwA Attachments

Posted by Arjen Poutsma <ar...@springsource.com>.
Hi,

I did some more digging, and it seems that this is an issue with SUN's  
RI of SAAJ, rather than Axiom. In Spring Web Services, I support both  
SAAJ and Axiom, and have unit tests that test both models. Apparently,  
the SAAJ AttachmentPart registers it's Java Activation  
XmlDataContentHandler for "text/xml", which screws up Axiom.  
Obviously, this is an atypical setup, so I guess that's why nobody saw  
this issue before.

I've sent a mail to the SAAJ mailing list, informing them of this bug.

Cheers,

Arjen

On 4 jul 2008, at 02:36, Thilina Gunarathne wrote:

> Hi,
> Just curious whether were you able to get it working on JDK 1.5..
>
> Following is something I never encountered when dealing with  
> DataHandlers
> earlier :(..
>> at
> com 
> .sun 
> .xml 
> .internal 
> .messaging 
> .saaj.soap.XmlDataContentHandler.writeTo(XmlDataContentHandler.java: 
> 106)
>
> thanks,
> Thilina
>
> On Thu, Jul 3, 2008 at 1:17 PM, Arjen Poutsma <
> arjen.poutsma@springsource.com> wrote:
>
>> Hi,
>>
>> I've been having some issues with Axiom's SOAP with Attachments'  
>> support.
>> Here's what I try to do, more or less:
>>
>> SOAPMessage message = ... // an Axiom SOAP message
>> Attachments attachments = ... // an Axiom attachment instance with  
>> some
>> attachments in it
>> OMOutputFormat format = new OMOutputFormat();
>> format.setCharSetEncoding(message.getCharsetEncoding());
>> format.setSOAP11(true);
>> format.setDoingSWA(true);
>> StringWriter writer = new StringWriter();
>> axiomMessage.getSOAPEnvelope().serialize(writer, format);
>> MIMEOutputUtils.writeSOAPWithAttachmentsMessage(writer, outputStream,
>> attachments, format);
>>
>> Ignoring for a moment the hoops I have to jump through (writing the  
>> message
>> to a StringWriter ?!?), running this code will give me the following
>> stacktrace:
>>
>> java.io.IOException: Invalid content type "text/xml; charset=UTF-8"  
>> for
>> XmlDCH
>>       at
>> com 
>> .sun 
>> .xml 
>> .internal 
>> .messaging 
>> .saaj.soap.XmlDataContentHandler.writeTo(XmlDataContentHandler.java: 
>> 106)
>>       at
>> javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java: 
>> 868)
>>       at javax.activation.DataHandler.writeTo(DataHandler.java:301)
>>       at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java: 
>> 452)
>>       at
>> org 
>> .apache 
>> .axiom.om.impl.MIMEOutputUtils.writeBodyPart(MIMEOutputUtils.java: 
>> 245)
>>       at
>> org 
>> .apache 
>> .axiom 
>> .om 
>> .impl 
>> .MIMEOutputUtils 
>> .writeSOAPWithAttachmentsMessage(MIMEOutputUtils.java:283)
>>       ... 33 more
>>
>> This is on Mac OS X, JDK 1.6.
>>
>> After some decompiling of the JDK, it seems to be related to the  
>> built in
>> DataHandler for XML not being able to handle the charset part of the
>> content-type; it can only handle the exact strings "text/xml" or
>> "application/xml". Wrong, I know, but since I don't have commit- 
>> access to
>> the JDK I am more-or-less stuck with it as is.
>>
>> Am I doing something wrong, or should I file a JIRA for this?
>>
>> Thanks,
>>
>> Arjen
>> ---
>> Arjen Poutsma
>> Senior Software Engineer, SpringSource
>> Spring Web Services Lead
>> E: arjen.poutsma@springsource.com
>> W: www.springsource.com
>> B: blog.springsource.com/arjen
>>
>>
>>
>>
>>
>>
>
>
> -- 
> Thilina Gunarathne - http://thilinag.blogspot.com


Re: [AXIOM] Issues with writing SwA Attachments

Posted by Thilina Gunarathne <cs...@gmail.com>.
Hi,
Just curious whether were you able to get it working on JDK 1.5..

Following is something I never encountered when dealing with DataHandlers
earlier :(..
>at
com.sun.xml.internal.messaging.saaj.soap.XmlDataContentHandler.writeTo(XmlDataContentHandler.java:106)

thanks,
Thilina

On Thu, Jul 3, 2008 at 1:17 PM, Arjen Poutsma <
arjen.poutsma@springsource.com> wrote:

> Hi,
>
> I've been having some issues with Axiom's SOAP with Attachments' support.
> Here's what I try to do, more or less:
>
>  SOAPMessage message = ... // an Axiom SOAP message
>  Attachments attachments = ... // an Axiom attachment instance with some
> attachments in it
>  OMOutputFormat format = new OMOutputFormat();
>  format.setCharSetEncoding(message.getCharsetEncoding());
>  format.setSOAP11(true);
>  format.setDoingSWA(true);
>  StringWriter writer = new StringWriter();
>  axiomMessage.getSOAPEnvelope().serialize(writer, format);
>  MIMEOutputUtils.writeSOAPWithAttachmentsMessage(writer, outputStream,
> attachments, format);
>
> Ignoring for a moment the hoops I have to jump through (writing the message
> to a StringWriter ?!?), running this code will give me the following
> stacktrace:
>
> java.io.IOException: Invalid content type "text/xml; charset=UTF-8" for
> XmlDCH
>        at
> com.sun.xml.internal.messaging.saaj.soap.XmlDataContentHandler.writeTo(XmlDataContentHandler.java:106)
>        at
> javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:868)
>        at javax.activation.DataHandler.writeTo(DataHandler.java:301)
>        at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:452)
>        at
> org.apache.axiom.om.impl.MIMEOutputUtils.writeBodyPart(MIMEOutputUtils.java:245)
>        at
> org.apache.axiom.om.impl.MIMEOutputUtils.writeSOAPWithAttachmentsMessage(MIMEOutputUtils.java:283)
>        ... 33 more
>
> This is on Mac OS X, JDK 1.6.
>
> After some decompiling of the JDK, it seems to be related to the built in
> DataHandler for XML not being able to handle the charset part of the
> content-type; it can only handle the exact strings "text/xml" or
> "application/xml". Wrong, I know, but since I don't have commit-access to
> the JDK I am more-or-less stuck with it as is.
>
> Am I doing something wrong, or should I file a JIRA for this?
>
> Thanks,
>
> Arjen
> ---
> Arjen Poutsma
> Senior Software Engineer, SpringSource
> Spring Web Services Lead
> E: arjen.poutsma@springsource.com
> W: www.springsource.com
> B: blog.springsource.com/arjen
>
>
>
>
>
>


-- 
Thilina Gunarathne - http://thilinag.blogspot.com