2013-05-14 1 views
0

우리는 webservice 솔루션을 개발 중입니다. webservice API는 Client WebService implementaion에서 SOAP 응답을 검색 할 수있는 몇 가지 호출을 제공합니다.AXIS Webservice Framework를 사용한 SAXParseException

구현은 AXIS 프레임 워크를 기반으로합니다.

응답을 다시받을 때 SAXParseException이 발생하는 경우를 제외하고는 모든 API 호출이 제대로 작동합니다.

SOAP UI를 시도 할 때이 특정 API에 대해 유효한 응답을 얻습니다. 그러나 Java 프로젝트를 시도 할 때 SAXParseException이 발생합니다. Java 및 SOAP UI 프로젝트 모두 동일한 WSDL 파일을 사용하여 생성되었습니다.

여기서 stacktrace를 살펴보고 여기에 잘못되었을 수있는 일에 대해 겸허 한 의견을 말하십시오.

XML received: 
2013-05-14 12:12:20,536 DEBUG http-bio-8080-exec-1 org.apache.axis.transport.http.HTTPSender - ----------------------------------------------- 
2013-05-14 12:12:20,536 DEBUG http-bio-8080-exec-1 org.apache.axis.SOAPPart - Enter: SOAPPart::getAsSOAPEnvelope() 
2013-05-14 12:12:20,536 DEBUG http-bio-8080-exec-1 org.apache.axis.i18n.ProjectResourceBundle - org.apache.axis.i18n.resource::handleGetObject(currForm) 
2013-05-14 12:12:20,536 DEBUG http-bio-8080-exec-1 org.apache.axis.SOAPPart - current form is FORM_INPUTSTREAM 
2013-05-14 12:12:20,708 DEBUG http-bio-8080-exec-1 org.apache.axis.transport.http.HTTPSender - org.xml.sax.SAXParseException: The root element is required in a well-formed document. 
2013-05-14 12:12:20,708 DEBUG http-bio-8080-exec-1 org.apache.axis.SOAPPart - Enter: SOAPPart ctor(FORM_FAULT) 
2013-05-14 12:12:20,708 DEBUG http-bio-8080-exec-1 org.apache.axis.i18n.ProjectResourceBundle - org.apache.axis.i18n.resource::handleGetObject(setMsgForm) 
2013-05-14 12:12:20,708 DEBUG http-bio-8080-exec-1 org.apache.axis.SOAPPart - Setting current message form to: FORM_FAULT (currentMessage is now org.apache.axis.AxisFault) 
2013-05-14 12:12:20,708 DEBUG http-bio-8080-exec-1 org.apache.axis.SOAPPart - Exit: SOAPPart ctor() 
2013-05-14 12:12:20,708 DEBUG http-bio-8080-exec-1 org.apache.axis.i18n.ProjectResourceBundle - org.apache.axis.i18n.resource::handleGetObject(toAxisFault00) 
2013-05-14 12:12:20,740 DEBUG http-bio-8080-exec-1 org.apache.axis.enterprise - Mapping Exception to AxisFault 
AxisFault 
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException 
faultSubcode: 
faultString: org.xml.sax.SAXParseException: The root element is required in a well-formed document. 
faultActor: 
faultNode: 
faultDetail: 
    {http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXParseException: The root element is required in a well-formed document. 
    at org.apache.xerces.framework.XMLParser.reportError(XMLParser.java:1213) 
    at org.apache.xerces.framework.XMLDocumentScanner.reportFatalXMLError(XMLDocumentScanner.java:570) 
    at org.apache.xerces.framework.XMLDocumentScanner$XMLDeclDispatcher.endOfInput(XMLDocumentScanner.java:790) 
    at org.apache.xerces.framework.XMLDocumentScanner.endOfInput(XMLDocumentScanner.java:418) 
    at org.apache.xerces.validators.common.XMLValidator.sendEndOfInputNotifications(XMLValidator.java:712) 
    at org.apache.xerces.readers.DefaultEntityHandler.changeReaders(DefaultEntityHandler.java:1031) 
    at org.apache.xerces.readers.XMLEntityReader.changeReaders(XMLEntityReader.java:168) 
    at org.apache.xerces.readers.AbstractCharReader.changeReaders(AbstractCharReader.java:150) 
    at org.apache.xerces.readers.AbstractCharReader.lookingAtChar(AbstractCharReader.java:217) 
    at org.apache.xerces.framework.XMLDocumentScanner$XMLDeclDispatcher.dispatch(XMLDocumentScanner.java:686) 
    at org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.java:381) 
    at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1098) 
    at javax.xml.parsers.SAXParser.parse(Unknown Source) 
    at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227) 
    at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696) 
    at org.apache.axis.Message.getSOAPEnvelope(Message.java:435) 
    at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:796) 
    at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:144) 
    at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32) 
    at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) 
    at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) 
    at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165) 
    at org.apache.axis.client.Call.invokeEngine(Call.java:2784) 
    at org.apache.axis.client.Call.invoke(Call.java:2767) 
    at org.apache.axis.client.Call.invoke(Call.java:2443) 
    at org.apache.axis.client.Call.invoke(Call.java:2366) 
    at org.apache.axis.client.Call.invoke(Call.java:1812) 

답변

3

응답에 유효한 xml이있는 것 같습니다.

<?xml version="1.0"?> 
<node1> 
... bla, bla 
</node1> 
<node2> 
... bla, bla 
</node2> 
<node_x> 
... bla, bla 
</node_x> 

대신

...

<?xml version="1.0"?> 
<node1> 
    <node2> 
    ... bla, bla 
    </node2> 
    <node_x> 
    ... bla, bla 
    </node_x> 
</node1> 

당신은 원시 형식의 내용을 확인하기 위해 네트워크 트래픽을 도청한다. 나는 누군가가 XML 코드를 손으로 만들고 잘 알려진 도구로 만들지 않으면 보통이 오류를 얻는다.

+0

네, 그렇다고 생각합니다. 우리는 여전히 같은 오류가 있습니다. SOAP UI에서 우리는이 특정 API에 대해 유효한 응답을 얻습니다. 그러나 우리가 Java에서 시도 할 때이 오류가 발생합니다. Java 및 SOAP UI 프로젝트 모두 동일한 WSDL 파일을 사용하여 생성되었습니다. – tiger