Отделить WSDL от клиентского приложения - PullRequest
2 голосов
/ 03 мая 2011

У меня есть клиент веб-службы Java, использующий веб-службы. Клиент генерируется с использованием инструмента WSDL2Java. Все работает нормально, пока поставщик веб-службы не изменит один из объектов схемы, добавив необязательное поле. Когда вызывается веб-служба, предполагается, что ответ возвращает массив этих объектов схемы, и поскольку возвращаемые объекты имеют дополнительное поле - все разрывается. Из того, что я понимаю, есть способ разрешить такие изменения, не нарушая клиентское приложение.
Не могли бы вы указать мне правильное направление, как решить эту проблему? Любое предложение приветствуется. Спасибо, Надя

Ответы [ 3 ]

2 голосов
/ 03 мая 2011

Попробуйте попробовать разные варианты привязки для вашего клиента.Если я не ошибаюсь, использование JAXBRI (od JiBX) должно решить проблему.попробуйте WSDL2Java -d jaxbri По умолчанию ADB больше информации в здесь

1 голос
/ 03 мая 2011

Эту проблему, как правило, трудно решить, поэтому схемы XML для клиентов не должны меняться очень часто. Вы можете попробовать отключить проверку схемы, но если схема слишком сильно изменится, ваше клиентское приложение все равно будет взорвано.

Рекомендуемый корпоративный способ сделать это (в жаргоне: «слабая связь») - это создать отдельный слой объектов домена и отобразить между сгенерированными классами Java и объектами вашего домена. Вы просто обновляете сопоставления при изменении схемы, которая не должна слишком глубоко проникать в слои вашего приложения. Но вам все равно нужно перекомпилировать приложение каждый раз, когда меняется схема.

1 голос
/ 03 мая 2011

Веб-сервис не соответствует WSDL?Может быть, вы можете изменить WSDL и добавить необязательное поле

Или WSDL изменен?Если WSDL был изменен, вам необходимо заново сгенерировать код с помощью инструмента WSDL2Java.

...