Michael, The following log message is interesting:
org.apache.axiom.om.impl.MTOMXMLStreamWriter - Returning access to the original output stream: java.io.bufferedoutputstr...@14181418 It means that the xmlbeans databinding bypasses the normal StAX XMLStreamWriter and writes part of the output directly to the underlying byte stream. It is probably at that moment that things go wrong. Can you please open a JIRA [1] and attach a sample AAR (or WAR) that allows us to reproduce this problem? Andreas [1] https://issues.apache.org/jira/ On Tue, Aug 18, 2009 at 12:41, Michael Fryars<[email protected]> wrote: > Andreas, here's the result of my test with Tomcat/Axis2-1.5, using a simple > echo service, databinding is xmlbeans, the WS client is SOAPUI 3.0. > > There are two requests to the same service. The request parameters don't > change, but the encoding is UTF-8 for the first request, then ISO-8859-1 for > the second. > > Here is what SOAPUI displayed for these requests: 4 views per request: > _01 main request view > _02 raw request view > _03 raw response view > _04 main response view > > ## exp01 SOAPUI request in UTF-8 > ## 01_01 > <?xml version='1.0' encoding='UTF-8'?> > <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" > xmlns:urn="urn:transport:mfrtest:1:api:axistest"> > <soapenv:Header/> > <soapenv:Body> > <urn:echoParameter> > <urn:clientMsg>déjà été à la plage</urn:clientMsg> > </urn:echoParameter> > </soapenv:Body> > </soapenv:Envelope> > > ## 01_02 > POST http://localhost:8080/MfrTestWar/services/EchoService_1 HTTP/1.1 > Accept-Encoding: gzip,deflate > Content-Type: text/xml;charset=UTF-8 > SOAPAction: "echo" > User-Agent: Jakarta Commons-HttpClient/3.1 > Host: localhost:8080 > Content-Length: 367 > > <?xml version='1.0' encoding='UTF-8'?> > <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" > xmlns:urn="urn:transport:mfrtest:1:api:axistest"> > <soapenv:Header/> > <soapenv:Body> > <urn:echoParameter> > <urn:clientMsg>déjà été à la plage</urn:clientMsg> > </urn:echoParameter> > </soapenv:Body> > </soapenv:Envelope> > > ## 01_03 > HTTP/1.1 200 OK > Server: Apache-Coyote/1.1 > Content-Type: text/xml;charset=UTF-8 > Transfer-Encoding: chunked > Date: Tue, 18 Aug 2009 09:15:18 GMT > > <?xml version="1.0" encoding="UTF-8"?> > <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> > <soapenv:Body> > <urn:echoResult xmlns:urn="urn:transport:mfrtest:1:api:axistest"> > <urn:serverMsg>là ça veut dire : déjà été à la > plage</urn:serverMsg> > </urn:echoResult> > </soapenv:Body> > </soapenv:Envelope> > > ## 01_04 > <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> > <soapenv:Body> > <urn:echoResult xmlns:urn="urn:transport:mfrtest:1:api:axistest"> > <urn:serverMsg>là ça veut dire : déjà été à la > plage</urn:serverMsg> > </urn:echoResult> > </soapenv:Body> > </soapenv:Envelope> > > > ## exp01 SOAPUI request in ISO-8859-1 > ## 02_01 > <?xml version='1.0' encoding='ISO-8859-1'?> > <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" > xmlns:urn="urn:transport:mfrtest:1:api:axistest"> > <soapenv:Header/> > <soapenv:Body> > <urn:echoParameter> > <urn:clientMsg>déjà été à la plage</urn:clientMsg> > </urn:echoParameter> > </soapenv:Body> > </soapenv:Envelope> > > ## 02_02 > POST http://localhost:8080/MfrTestWar/services/EchoService_1 HTTP/1.1 > Accept-Encoding: gzip,deflate > Content-Type: text/xml;charset=iso-8859-1 > SOAPAction: "echo" > User-Agent: Jakarta Commons-HttpClient/3.1 > Host: localhost:8080 > Content-Length: 367 > > <?xml version='1.0' encoding='ISO-8859-1'?> > <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" > xmlns:urn="urn:transport:mfrtest:1:api:axistest"> > <soapenv:Header/> > <soapenv:Body> > <urn:echoParameter> > <urn:clientMsg>déjà été à la plage</urn:clientMsg> > </urn:echoParameter> > </soapenv:Body> > </soapenv:Envelope> > > ## 02_03 > HTTP/1.1 200 OK > Server: Apache-Coyote/1.1 > Content-Type: text/xml;charset=iso-8859-1 > Transfer-Encoding: chunked > Date: Tue, 18 Aug 2009 09:20:07 GMT > > <?xml version="1.0" encoding="iso-8859-1"?> > <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> > <soapenv:Body> > <urn:echoResult xmlns:urn="urn:transport:mfrtest:1:api:axistest"> > <urn:serverMsg>là ça veut dire : déjà été à la > plage</urn:serverMsg> > </urn:echoResult> > </soapenv:Body> > </soapenv:Envelope> > > ## 02_04 > <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> > <soapenv:Body> > <urn:echoResult xmlns:urn="urn:transport:mfrtest:1:api:axistest"> > <urn:serverMsg>là ça veut dire : déjà été à la > plage</urn:serverMsg> > </urn:echoResult> > </soapenv:Body> > </soapenv:Envelope> > > > I confirmed that my server-side handler receives a correctly decoded > parameter string from Axis2 (i.e. UTF-8 => unicode, ISO-8859-1 => unicode). > But you can see that the response in the ISO-8859-1 case is not correctly > encoded: the special characters are still in UTF-8. > > Debug trace files for the two request/response trials are attached to this > message. > > Best regards, > > Michael > > > On Fri, Aug 14, 2009 at 7:11 PM, Andreas Veithen <[email protected]> > wrote: >> >> Michael, >> >> Can you test this with 1.5 and if the problem persists, create a >> minimal AAR that reproduces the problem (so that we can debug it)? >> >> Andreas >> >> On Fri, Aug 14, 2009 at 12:27, Michael Fryars<[email protected]> wrote: >> > Axis2 v1.4.1, running in a WAR in a tomcat 6 container. >> > >> > On Fri, Aug 14, 2009 at 12:20 PM, Andreas Veithen >> > <[email protected]> wrote: >> >> >> >> Which version of Axis2 do you use? >> >> >> >> Andreas >> >> >> >> On Fri, Aug 14, 2009 at 11:39, Michael Fryars<[email protected]> >> >> wrote: >> >> > Hello, >> >> > I'm seeking some advice/help with a character encoding problem with >> >> > an >> >> > axis2 >> >> > service (i.e. server side). >> >> > >> >> > When my service receives a (WS/SOAP) request with: >> >> > Content-Type: text/xml; charset=UTF-8 >> >> > in the HTTP header, everything works fine, any unusual charcters in >> >> > the >> >> > response are correctly encoded in UTF-8. >> >> > >> >> > But when the service receives a request with: >> >> > Content-Type: text/xml; charset=ISO-8859-1 >> >> > the response is inconsistent. The response is labelled as ISO-8859-1: >> >> > Content-Type: text/xml; charset=ISO-8859-1 >> >> > <?xml version="1.0" encoding="ISO-8859-1"?> >> >> > but in fact the message body is still encoded in UTF-8. >> >> > >> >> > Should the axis2 engine automatically select and use ISO-8859-1 >> >> > encoding >> >> > for >> >> > the response? Or is it something I need to configure? Or is it always >> >> > UTF-8? >> >> > >> >> > I understood from a previous thread ("How to change Axis2 response >> >> > character >> >> > encoding") that axis2 selects a a message builder based on the >> >> > Content-Type >> >> > header. My axis2.xml config does not contain anything specifically >> >> > for >> >> > "text/xml" : >> >> > >> >> > <messageBuilders> >> >> > <messageBuilder contentType="application/xml" >> >> > >> >> > class="org.apache.axis2.builder.ApplicationXMLBuilder"/> >> >> > <messageBuilder contentType="application/xml" >> >> > >> >> > class="org.apache.axis2.builder.ApplicationXMLBuilder"/> >> >> > <messageBuilder >> >> > contentType="application/x-www-form-urlencoded" >> >> > >> >> > class="org.apache.axis2.builder.XFormURLEncodedBuilder"/> >> >> > <messageBuilder contentType="multipart/form-data" >> >> > >> >> > class="org.apache.axis2.builder.MultipartFormDataBuilder"/> >> >> > </messageBuilders> >> >> > >> >> > Is this where I need to intervene to control the response encoding? >> >> > >> >> > Thanks in advance for any help you can provide. >> >> > >> >> > Michael Fryars >> >> > >> > >> > > >
