Hi Fernando, I ran across this problem before. The problem didn't originate with the service, but in the data sent to the service from the client. In my case, the user was cutting and pasting Outlook emails into a comment field, which included some characters that aren't well liked when trying to push it into an XML node. So, to fix it, I encode it on the client side, and then do a
comment = URLDecoder.decode(comment, "UTF-8"); on the service side to decode it. That did the trick for me. Ron Grimes -----Original Message----- From: Fernando Avalos García [mailto:[email protected]] Sent: Tuesday, May 26, 2009 1:18 AM To: [email protected] Subject: Invalid UTF-8 middle byte 0x64 Hi, I am getting an error in a CXF service. I think I could solve this problem changing the encoding to ISO-8859-1. How could I do that? Here is the complete stack trace. Thanks in advance... 02:04:00,263 ERROR [STDERR] May 26, 2009 2:04:00 AM org.apache.cxf.phase.PhaseInterceptorChain doIntercept INFO: Interceptor has thrown exception, unwinding now org.apache.cxf.interceptor.Fault: Unmarshalling Error: [was class java.io.CharConversionException] Invalid UTF-8 middle byte 0x64 (at char #4701, byte #3999) at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:629) at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:527) at org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:108) at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:102) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236) at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:89) at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:99) at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:337) at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:182) at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:163) at org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost(AbstractCXFServlet.java:141) at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446) at java.lang.Thread.run(Thread.java:595) Caused by: java.lang.RuntimeException: [was class java.io.CharConversionException] Invalid UTF-8 middle byte 0x64 (at char #4701, byte #3999) at com.ctc.wstx.util.ExceptionUtil.throwRuntimeException(ExceptionUtil.java:18) at com.ctc.wstx.sr.StreamScanner.throwLazyError(StreamScanner.java:731) at com.ctc.wstx.sr.BasicStreamReader.safeFinishToken(BasicStreamReader.java:3655) at com.ctc.wstx.sr.BasicStreamReader.getTextCharacters(BasicStreamReader.java:830) at org.apache.cxf.staxutils.DepthXMLStreamReader.getTextCharacters(DepthXMLStreamReader.java:164) at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.handleCharacters(StAXStreamConnector.java:356) at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:220) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:360) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:339) at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:607) ... 30 more Caused by: java.io.CharConversionException: Invalid UTF-8 middle byte 0x64 (at char #4701, byte #3999) at com.ctc.wstx.io.UTF8Reader.reportInvalidOther(UTF8Reader.java:313) at com.ctc.wstx.io.UTF8Reader.read(UTF8Reader.java:204) at com.ctc.wstx.io.MergedReader.read(MergedReader.java:101) at com.ctc.wstx.io.ReaderSource.readInto(ReaderSource.java:84) at com.ctc.wstx.io.BranchingReaderSource.readInto(BranchingReaderSource.java:57) at com.ctc.wstx.sr.StreamScanner.loadMore(StreamScanner.java:992) at com.ctc.wstx.sr.BasicStreamReader.readTextSecondary(BasicStreamReader.java:4626) at com.ctc.wstx.sr.BasicStreamReader.readCoalescedText(BasicStreamReader.java:4124) at com.ctc.wstx.sr.BasicStreamReader.finishToken(BasicStreamReader.java:3699) at com.ctc.wstx.sr.BasicStreamReader.safeFinishToken(BasicStreamReader.java:3647) ... 37 more _________________________________________________________________ Windows Live te ayuda a mantenerte en contacto con todos tus amigos en un solo sitio. http://www.microsoft.com/mexico/windows/windowslive/products/social-network-connector.aspx
