В CXF зачем использовать любую другую привязку, кроме JAXB? (MTOM-вложения, Aegis, XMLBeans, ...) - PullRequest
7 голосов
/ 03 сентября 2010

Я играл с Apache CXF, в частности с различными привязками данных, которые он поддерживает: JAXB (по умолчанию), MTOM, Aegis и XMLBeans.Поскольку все они поддерживаются, я полагаю, что у каждого есть свои достоинства.Я придумал это:

  • Очевидно, что MTOM предпочтительнее, когда речь идет о больших вложениях.
  • JAXB зависит от аннотаций, поэтому он менее подходит, когда изменение классов ограничено.
  • Aegis не имеет инструмента wsdl2java, поэтому он менее подходит для разработки "по контракту", т. Е. Начните с WSDL и сгенерируйте свой код Java из этого.
  • It Появляется , что Aegis обеспечивает немного больший контроль над отображением между классами Java и XML с помощью своего декларативного синтаксиса в Class .aegis.xml файлах.С другой стороны, я не мог придумать ни одного сценария, в котором JAXB не справился бы с задачей.

Я нашел этот вопрос, сопоставляющий JAXB и XMLBeans, но он не дает исчерпывающего обзора:

JAXB против Apache XMLBeans

Помимо этих наивных, априорных соображений, есть ли у вас какие-то кровавые переживания, которые бы поддерживали использование любого другого связывания, кроме JAXB?Я спрашиваю с точки зрения CXF, но если какие-либо другие варианты приходят на ум (например, Castor), пожалуйста, не стесняйтесь уточнять.

Ответы [ 2 ]

3 голосов
/ 03 сентября 2010

Помните, что JAXB - это спецификация , поэтому существует несколько реализаций: Metro (эталонная реализация, MOXy (я технический руководитель) и т. Д.

JAXB можно использовать, начиная с классов Java или схемы XML. Если у вас есть классы, которые не могут быть изменены, отдельные реализации JAXB предлагают расширения для обработки этого. См. Внешние метаданные MOXy:

JAXB был разработан для работы с вложениями MTOM, см. Маршаллер / unmarshaller вложения.

MOXy имеет сопоставления на основе XPath, которые обеспечивают полный контроль привязки вашего объекта к XML, см.:

3 голосов
/ 03 сентября 2010

Если начинать с нуля, чтобы создать первый веб-сервис WSDL, то я определенно рекомендую придерживаться JAXB в 95% случаев (возможно, даже выше).Это, безусловно, лучшая из протестированных привязок данных в CXF, и она работает довольно хорошо.

Где другие привязки данных обычно используются для одного из двух случаев:

1) Первые случаи использования Java, когда у вас уже есть что-тонаписано на Java, которое вы хотите представить как веб-сервис без каких-либо изменений в коде.У Aegis есть свои сильные стороны, так как он предназначен для работы с более широким спектром вещей, чем JAXB.Однако, если вы МОЖЕТЕ изменить код, добавление аннотаций JAXB обычно не так сложно.Если у вас есть в основном нормальные «бины», это не страшно.

2) Существующие приложения, использующие определенное отображение.Если у вас есть существующие приложения, которые ожидают bean-компоненты XMLBeans (или bean-объекты SDO при использовании 2.3-SNAPSHOT из CXF, или JiBX-бины, если следуют проекту GSoC), то использование других привязок данных может помочь, удалив любые необходимые отображения из JAXB в эти объектные модели,

Надеюсь, это немного поможет.

...