Ошибка Apache Axis WSDL2Java — отсутствует элемент ‹soap:fault›

Мы интегрируем сторонние веб-службы SOAP в наше приложение. WSDL используется с инструментом SOAPUI, где образцы запросов и ответов работали нормально.

Когда мы пытаемся интегрироваться с apache Axis 1.3, где мы пробовали WSDL2JAVA с WSDL. Мы получили следующую ошибку

java.io.IOException: ОШИБКА: отсутствует элемент inFault "serviceFault" в операции "serviceFault", в привязке saveRegistration в org.apache.axis.wsdl.symbolTable.SymbolTable.faultsFromSOAPFault(SymbolTable.java:2858) в org.apache.axis .wsdl.symbolTable.SymbolTable.populateBindings(SymbolTable.java:2549) в org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:744) в org.apache.axis.wsdl.symbolTable.SymbolTable.add (SymbolTable.java:543) в org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:518) в org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:495) в org.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:361) на java.lang.Thread.run(неизвестный источник)

Кто-нибудь уже сталкивался с этой проблемой и решил?


person Pearl    schedule 25.01.2010    source источник


Ответы (2)


Я считаю, что для этого открыта JIRA.

Описание:

При наличии привязки soap 1.2 к soap fault элемент ошибки извлекается неправильно, что приводит к ошибке

 ERROR: Missing <soap:fault> element inFault "..." in operation "...", in binding ...

Их временная рекомендация — добавить строку кода и перекомпилировать Axis1… Неее.

Лично я только что загрузил файл wsdl (это служба Axis 2, и у меня есть клиент Axis 1.5) и отредактировал пространство имен для всех следующих строк из:

     <wsdl:fault name="Exception">
        <soap12:fault use="literal" name="Exception"/>
     </wsdl:fault>

to:

     <wsdl:fault name="Exception">
        <soap:fault use="literal" name="Exception"/>
     </wsdl:fault>

Как предложено здесь.

Однако обновление до Axis2 является лучшим долгосрочным решением. После решения этой проблемы я обнаружил еще больше ошибок в коде, сгенерированном WSDL2JAVA.

person ian_scho    schedule 20.05.2010
comment
Спасибо. Следующее сработало для меня <wsdl:fault name="Exception"> <soap11:fault use="literal" name="Exception"/> </wsdl:fault> - person Manohar; 09.09.2015

Я решил эту проблему, изменив пространство имен XML, как показано ниже:

Изменить это

xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"

to

xmlns:soap12="http://schemas.xmlsoap.org/wsdl/мыло/"

удаляется только 12 в конце.

person mfe    schedule 08.02.2019