2013-03-03 8 views
0

서버 측의 일부 데이터 프로세스를 WS를 통해 클라이언트에 전달하려고합니다. 클라이언트로 응답을 보내는 동안이 예외가 발생출력 할 텍스트의 문자가 올바르지 않습니다.

SEVERE: caught throwable 
    javax.xml.ws.WebServiceException: com.ctc.wstx.exc.WstxIOException: Invalid null character in text to output 
     at com.sun.xml.ws.encoding.StreamSOAPCodec.encode(StreamSOAPCodec.java:112) 
     at com.sun.xml.ws.encoding.SOAPBindingCodec.encode(SOAPBindingCodec.java:278) 
     at com.sun.xml.ws.transport.http.HttpAdapter.encodePacket(HttpAdapter.java:380) 
     at com.sun.xml.ws.transport.http.HttpAdapter.access$100(HttpAdapter.java:92) 
     at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:525) 
     at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:285) 
     at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:143) 
     at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doGet(WSServletDelegate.java:155) 
     at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doPost(WSServletDelegate.java:189) 
     at com.sun.xml.ws.transport.http.servlet.WSServlet.doPost(WSServlet.java:76) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
     at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:555) 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 
     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852) 
     at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) 
     at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
     at java.lang.Thread.run(Thread.java:662) 
Caused by: com.ctc.wstx.exc.WstxIOException: Invalid null character in text to output 
     at com.ctc.wstx.sw.BaseStreamWriter.writeCharacters(BaseStreamWriter.java:520) 
     at com.sun.xml.ws.util.DOMUtil.serializeNode(DOMUtil.java:135) 
     at com.sun.xml.ws.util.DOMUtil.serializeNode(DOMUtil.java:138) 
     at com.sun.xml.ws.util.DOMUtil.serializeNode(DOMUtil.java:138) 
     at com.sun.xml.ws.util.DOMUtil.serializeNode(DOMUtil.java:138) 
     at com.sun.xml.ws.util.DOMUtil.serializeNode(DOMUtil.java:138) 
     at com.sun.xml.ws.util.DOMUtil.serializeNode(DOMUtil.java:138) 
     at com.sun.xml.ws.util.DOMUtil.serializeNode(DOMUtil.java:138) 
     at com.sun.xml.ws.message.saaj.SAAJMessage.writeTo(SAAJMessage.java:365) 
     at com.sun.xml.ws.encoding.StreamSOAPCodec.encode(StreamSOAPCodec.java:109) 
     ... 24 more 
Caused by: java.io.IOException: Invalid null character in text to output 
     at com.ctc.wstx.sw.XmlWriter.throwInvalidChar(XmlWriter.java:538) 
     at com.ctc.wstx.sw.BufferingXmlWriter.writeCharacters(BufferingXmlWriter.java:453) 
     at com.ctc.wstx.sw.BaseStreamWriter.writeCharacters(BaseStreamWriter.java:518) 

:

는하지만이 오류를 받고 있어요. 클라이언트 측에서

이 응답입니다 :

ParseError at [row,col]:[1,11347] 

그러나이보고 그것의 오류입니다 발견하기가 매우 어렵습니다. 어쨌든이 오류를 해결할 수 있습니까?

+0

오류가 표시되는 동안 무엇을하고 있었습니까? – MayogaX

+0

서비스 호출은 서비스 측면에서 계산을 수행하고 응답을 반환하기위한 것입니다. 클라이언트 측에 응답을 보내려고 할 때 오류가 발생합니다. – KTB

+0

이 문제의 원인을 찾았습니까? – peterh

답변

0

예외에서 알 수 있듯이, 쓰려고하는 객체의 일부 문자열 (문자 데이터 값)에 null 문자 (유니 코드 0)가 포함되어 있습니다. 손상된 문자열 값을 찾아서 수정하는 것 이외에도 Woodstox가 잘못된 문자 값을 변경하도록하여이 문제를 해결할 수도 있습니다. How to alleviate the infamous "Xml Invalid Character" problem with Woodstox을 참조하십시오.