Является ли использование XSD хорошей практикой при передаче маршаллированных объектов XML по проводам? - PullRequest
3 голосов
/ 25 января 2011

Я использую смесь JAXB, JPA и веб-службы RESTful для передачи объектов по проводам. Мои доменные объекты содержат смесь аннотаций JPA и JAXB, и я могу успешно демаршировать свои доменные объекты, используя RestTemplate Spring с минимальным количеством кода. Я помню, что читал что-то не так давно (возможно, это был ответ на SO, возможно, это был блог), где автор утверждал, что он никогда не будет полагаться на аннотации в производственной среде, но всегда маршалл и демаршалл в соответствии со схемой. Это все еще необходимая практика?

Если у меня есть .jar с аннотированными bean-компонентами, который является зависимостью в двух проектах (например, в создании веб-службы RESTful и потребляющем клиенте), разве введенные сгенерированные XSD не добавят еще один набор данных, требующий обслуживания? Когда используются аннотированные JAXB POJO, когда необходимы схемы и какую пользу они дают?

Ответы [ 3 ]

1 голос
/ 25 января 2011

Пока все пользователи сервисов являются Java-клиентами, я согласен, что это мало что даст вам, а только добавляет дополнительных усилий по обслуживанию.Однако если вы планируете использовать клиенты, отличные от Java, создание XSD (возможно, как часть автоматической сборки, которая минимизирует затраты на обслуживание) имеет смысл.

1 голос
/ 25 января 2011

JAXB представляет свои метаданные в виде аннотаций, поэтому в соответствии с XML-схемой маршал / демаршал действительно отсутствует.

Я возглавляю компонент JAXB ( MOXy ) EclipseLink , который лучше всего известен благодаря реализации JPA .Я рекомендую разработчикам использовать комбинацию аннотаций JAXB и JPA для их модели.

Использование схемы XML:

  • Как , упомянутыйbiziclop JAXB может использовать схему XML во время операций маршала / демаршала для выполнения проверки.
  • Схема XML также предоставляет клиентам службы RESTful возможность узнать, как выглядит ожидаемое сообщение XML.Как и , упомянутый Фабианом Стигом , вы можете упростить поддержку схемы, создав ее как часть вашей сборки.
1 голос
/ 25 января 2011

В dev и тестовой среде валидация схемы может быть весьма полезна (например, обнаружение различных версий кода), в производственной среде ее лучше отключить.Если система, с которой вы общаетесь, не разработана кем-то другим, в этом случае проверка XSD может помочь быстро и эффективно перебросить вину.

...