Apache Axis отказывает после изменения в WSDL - PullRequest
1 голос
/ 26 февраля 2011

У меня есть веб-сервис SOAP, обслуживаемый из приложения .net. Иногда мы добавляем некоторые определения объектов, но они всегда являются необязательными, и с точки зрения XML / HTTP теги xml, представляющие эти поля, могут быть опущены, и это прекрасно работает. Это должно позволить существующим пользователям веб-сервисов продолжать работать.

и именно так это работает практически для всех. Клиенты, использующие .net, python, ruby ​​и т. Д., Не имеют проблем с этим. Но любое изменение, похоже, нарушает любого, кто использует Apache Axis2 в Java.

Кажется, что при каждом запросе Axis проверяет конечные точки WSDL и проверяет, что он ТОЧНО похож на заглушки. Если нет, то это исключение. (неожиданный субэлемент)

Есть ли какая-либо опция в Axis, чтобы отключить эту функцию и заставить Axis просто предполагать, что ее текущие заглушки верны?

UPDATE: Следует также отметить, что это проблема для клиентов, использующих ColdFusion, поскольку он использует Axis2

Ответы [ 2 ]

1 голос
/ 28 февраля 2011

По умолчанию Apache CXF также может выдать исключение из-за элемента, который он не понимает. Однако вы можете установить свойство "set-jaxb-validation-event-handler" в "false" на конечной точке, и это будет игнорироваться.

0 голосов
/ 28 февраля 2011

Итак, я вроде как отлаживаю это с точки зрения наших клиентов. Я получил все в порядке и смог воспроизвести ошибку с более старой версией Axis2 (1.2). В последней версии, которую я имею (1.5.4), похоже, нет этой проблемы (с использованием привязок ADB), поэтому обновление - хороший обходной путь для наших клиентов, использующих Axis прямо вверх. К сожалению, многие наши клиенты используют ColdFusion, в который встроена более старая версия, поэтому мне придется выяснить, что с ними делать.

...