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 at) org.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:361) в java.lang.Thread.run(неизвестный источник)

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

2 ответа

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

Описание:

Если у вас есть связывание мыла 1.2 с ошибкой мыла, элемент ошибки извлекается неправильно, что приводит к ошибке

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

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

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

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

чтобы:

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

Как предлагается здесь.

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

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

Изменить это

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

в

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

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

Другие вопросы по тегам