You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Raffaele Gambelli (JIRA)" <ji...@apache.org> on 2018/08/21 11:01:00 UTC

[jira] [Commented] (CXF-1771) WstxUnexpectedCharException when returning a String from a CXF SOAP service containing specific characters (used with CXF client)

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

Raffaele Gambelli commented on CXF-1771:
----------------------------------------

Ten years later...same problem, I beg your pardon if I comment a closed issue but I really need to find a solution to this problem.

My application downloads emails and provides web-services to get their contents, but in their content there could be anything, control characters too, so my cxf ws fail each time encounter an e-mail containing, either in subject or body a control char.

Thank you

> WstxUnexpectedCharException when returning a String from a CXF SOAP service containing specific characters (used with CXF client)
> ---------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CXF-1771
>                 URL: https://issues.apache.org/jira/browse/CXF-1771
>             Project: CXF
>          Issue Type: Bug
>    Affects Versions: 2.1.2
>            Reporter: Martijn Brinkers
>            Priority: Major
>             Fix For: Invalid
>
>
> If my SOAP service returns a String that contains control characters and the service is consumed by a CXF client a com.ctc.wstx.exc.WstxUnexpectedCharException is being thrown.
> It's easy to duplicate (in my setup) by modifying one line of the CXF 2.1.2 sample samples/java_first_jaxws:
>     public String sayHiToUser(User user) {
>         System.out.println("sayHiToUser called");
>         users.put(users.size() + 1, user);
>         return "Hello "  + user.getName() + '\27';          <<<===== add '\27' to the String being returned
>     }
> Now when you start the client sample the following exception is being thrown:
> INFO: Interceptor has thrown exception, unwinding now
> org.apache.cxf.interceptor.Fault: Unmarshalling Error: Illegal character ((CTRL-CHAR, code 23))
>  at [row,col {unknown-source}]: [1,161] 
> 	at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:552)
> 	at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:465)
> 	at org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:105)
> 	at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:102)
> 	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:220)
> 	at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:449)
> 	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2029)
> 	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1865)
> 	at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
> 	at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:593)
> 	at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
> 	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:220)
> 	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:296)
> 	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:242)
> 	at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
> 	at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:178)
> 	at $Proxy42.sayHiToUser(Unknown Source)
> 	at demo.hw.client.Client.main(Client.java:56)
> Caused by: javax.xml.bind.UnmarshalException
>  - with linked exception:
> [com.ctc.wstx.exc.WstxUnexpectedCharException: Illegal character ((CTRL-CHAR, code 23))
>  at [row,col {unknown-source}]: [1,161]]
> 	at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:422)
> 	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:337)
> 	at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:537)
> 	... 17 more
> Caused by: com.ctc.wstx.exc.WstxUnexpectedCharException: Illegal character ((CTRL-CHAR, code 23))
>  at [row,col {unknown-source}]: [1,161]
> 	at com.ctc.wstx.sr.StreamScanner.throwInvalidSpace(StreamScanner.java:650)
> 	at com.ctc.wstx.sr.BasicStreamReader.readTextPrimary(BasicStreamReader.java:4554)
> 	at com.ctc.wstx.sr.BasicStreamReader.nextFromTree(BasicStreamReader.java:2886)
> 	at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1019)
> 	at org.apache.cxf.staxutils.DepthXMLStreamReader.next(DepthXMLStreamReader.java:220)
> 	at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:225)
> 	at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:358)
> 	... 19 more
> Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Unmarshalling Error: Illegal character ((CTRL-CHAR, code 23))
>  at [row,col {unknown-source}]: [1,161] 
> 	at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:199)
> 	at $Proxy42.sayHiToUser(Unknown Source)
> 	at demo.hw.client.Client.main(Client.java:56)
> Caused by: org.apache.cxf.interceptor.Fault: Unmarshalling Error: Illegal character ((CTRL-CHAR, code 23))
>  at [row,col {unknown-source}]: [1,161] 
> 	at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:552)
> 	at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:465)
> 	at org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:105)
> 	at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:102)
> 	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:220)
> 	at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:449)
> 	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2029)
> 	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1865)
> 	at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
> 	at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:593)
> 	at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
> 	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:220)
> 	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:296)
> 	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:242)
> 	at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
> 	at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:178)
> 	... 2 more
> Caused by: javax.xml.bind.UnmarshalException
>  - with linked exception:
> [com.ctc.wstx.exc.WstxUnexpectedCharException: Illegal character ((CTRL-CHAR, code 23))
>  at [row,col {unknown-source}]: [1,161]]
> 	at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:422)
> 	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:337)
> 	at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:537)
> 	... 17 more
> Caused by: com.ctc.wstx.exc.WstxUnexpectedCharException: Illegal character ((CTRL-CHAR, code 23))
>  at [row,col {unknown-source}]: [1,161]
> 	at com.ctc.wstx.sr.StreamScanner.throwInvalidSpace(StreamScanner.java:650)
> 	at com.ctc.wstx.sr.BasicStreamReader.readTextPrimary(BasicStreamReader.java:4554)
> 	at com.ctc.wstx.sr.BasicStreamReader.nextFromTree(BasicStreamReader.java:2886)
> 	at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1019)
> 	at org.apache.cxf.staxutils.DepthXMLStreamReader.next(DepthXMLStreamReader.java:220)
> 	at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:225)
> 	at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:358)
> 	... 19 more



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)