2009-11-10 64 views
2

当我使用自动生成的ServiceBindingStub.java时出现此错误。 WebService方面工作正常,所以这个错误必须在代码中,但代码是自动生成的,所以我不知道为什么它不起作用。其他一些电话正常工作,但这不是。这个调用包括更新,而其他工作调用只是从WebService获取数据。Axis 1.4 AxisFault文件过早结束

AxisFault 
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException 
faultSubcode: 
faultString: org.xml.sax.SAXParseException: Premature end of file. 
faultActor: 
faultNode: 
faultDetail: 
    {http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXParseException: Premature end of file. 
    at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source) 
    at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source) 
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) 
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) 
    at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source) 
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) 
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) 
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) 
    at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) 
    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.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62) 
    at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206) 
    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) 

回答

7

发生这种情况时,您连接到的服务不会返回SOAP响应,但会返回一些文本或HTML。尝试在浏览器中打开URL或使用一些SOAP调试器(如SOAP UI)来查看服务返回的内容。

+0

它返回:HTTP/1.1 200 OK 日期:星期二,2009年11月10日12点48分24秒GMT 服务器:Apache 的Content-Length:0 的Content-Type:text/html的 – newbie

+0

那么什么是错的与XML它返回。你可以尝试使用XMLSpy之类的工具来检查其格式吗? –

+0

哦,实际上在你的回应中:“Content-Length:0”。根本没有XML。我认为这就是你看到SAXParseException的原因。因为没有什么可以解析的。 –

2

我曾经有过同样的问题。在我的情况下,我收到标签之间有'二进制数据'的消息(图像)。 Axis使用一个固定大小的缓冲区来读取数据,一旦缓冲区满了,它就会继续进行并且不同步。

事实上,通过逐步调试存根代码,您应该能够在xml文件中找到标签或部件。不能保证,问题可以很容易解决,但它可能会提示您(a)存根未正确生成,或者(b)xml文件对于已使用的模式不完整或无效生成存根。

祝你好运! (我没有解决我的问题..)

0

我刚刚(并解决了)这个问题,遵循Superfilin的答案。最后,问题结果是我没有为我在deployment.wsdd文件中返回的类中的一个添加<beanMapping>。任何时候响应都会包含那个类,我会得到一个完全空的消息体。

0

即使我们面临同样的问题。但内容中有一些特殊字符。我们删除了这些特殊字符,它工作正常。