Я предлагаю модуль веб-служб Spring , который не требует генерации кода, но обеспечивает четкое разделение задач.Различные проблемы легко решаются, позволяя вам предоставить WSDL и существующие схемы с одной стороны ( контракт сначала ), существующую модель домена на основе Java с другой, и способподключить в выбранной вами технологии OXM (Object-XML Mapping).
Поскольку у вас есть созданные вручную WSDL / схема и классы Java, созданные вручную, реальная работа будет заключаться в настройке вашего OXM.Я предпочитаю JiBX, поскольку он разделяет проблемы (без мусора XML-аннотаций, смешанного с вашим доменом) с JAXB в качестве резервной копии, если кривая обучения выглядит слишком крутой.Spring Web Services поддерживает несколько других OXM-сред, и вы даже можете использовать несколько разных одновременно.
Что касается передового опыта, то я считаю, что созданный вручную код является наилучшей практикой, хотя я могу быть в меньшинстве,Если вы генерируете классы из XML, вы в конечном итоге получаете классы, которые являются простыми контейнерами данных без какого-либо поведения (при условии, что вы хотите создавать их заново при каждом изменении WSDL / XSD).Это плохо, если вы предпочитаете объектно-ориентированную парадигму, потому что вам приходится размещать свою «бизнес-логику» в утилитах / помощниках / службах и т. Д., А не в доменных объектах, которым она действительно принадлежит.Это одна из причин, почему я предпочитаю JiBX.Я могу создавать очень хорошие объекты OO с поведением, хорошей чистой схемой, которая не обязательно соответствует объектам, и могу управлять изменениями в любую сторону с помощью файла сопоставления, аналогично тому, как это делает hibernate для ORM (Object-Relational Mapping).Вы можете сделать то же самое с JAXB, но это требует встраивания структуры XML в вашу объектную модель и привязки к ней одного представления XML (тогда как с JiBX их может быть много).