Мы интегрируем третье лицо веб-сервисы SOAP в нашем приложении. WSDL используется с инструментом SOAPUI, где демонстрационные запросы и ответы хорошо работали.
Когда мы пытаемся интегрироваться с апачской Осью 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 (Синтаксический анализатор java:361) в java.lang. Thread.run (Неизвестный Источник)
Кто-либо уже столкнулся с этой проблемой и решил?
Я полагаю, что для этого открыта JIRA.
Описание:
Когда у вас есть привязка soap 1.2 с soap fault, элемент 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>
на:
<wsdl:fault name="Exception">
<soap:fault use="literal" name="Exception"/>
</wsdl:fault>
Как было предложено здесь.
Обновление до Axis2, однако, является лучшим долгосрочным решением. После решения этой проблемы я обнаружил еще больше ошибок в коде, сгенерированном WSDL2JAVA.