Axis 1.4 AxisFault Преждевременный конец файла - PullRequest
2 голосов
/ 10 ноября 2009

Я получаю эту ошибку, когда использую свой автоматически сгенерированный ServiceBindingStub.java. Сторона WebService работает нормально, поэтому эта ошибка должна быть в коде, но код генерируется автоматически, поэтому я не могу знать, почему он не работает. Некоторые другие звонки работают нормально, но это не так. Этот вызов включал обновление, в то время как другие рабочие вызовы просто загружают данные из WebService.

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)

Ответы [ 4 ]

7 голосов
/ 10 ноября 2009

Это происходит, когда служба, к которой вы подключаетесь, возвращает не SOAP-ответ, а какой-либо текст или HTML.Попробуйте открыть URL-адрес в браузере или используйте отладчик SOAP, например SOAP UI , чтобы узнать, что возвращается из службы.

2 голосов
/ 10 ноября 2009

У меня когда-то была такая же проблема. В моем случае я получил сообщения с «двоичными данными» между тегами (изображения). Axis использовала буфер фиксированного размера для чтения данных, после того как буфер был заполнен, он просто продолжал и заканчивал синхронизацию.

На самом деле, вы должны быть в состоянии найти тег или деталь в XML-файле, шаг за шагом отлаживая код заглушки. Нет гарантии, что проблема может быть легко решена, но это может дать вам подсказку о том, что (а) заглушка не была сгенерирована правильно или (б) XML-файл просто не правильно сформирован или не подходит для использованной схемы создать заглушку.

Удачи! (Я не решил свою проблему ..)

0 голосов
/ 16 января 2013

Даже мы столкнулись с той же проблемой. Но в содержании есть специальные символы. Мы удалили эти специальные символы, и они работали нормально.

0 голосов
/ 18 августа 2010

Я только что (и решил) эту проблему, следуя ответу Суперфилина. В конце концов, проблема заключалась в том, что я не добавил <beanMapping> для одного из классов, которые я возвращал, в своем файле deploy.wsdd. Каждый раз, когда ответ включал бы этот класс, я получал бы полностью пустое тело сообщения.

...