Маршаллинг JAXB в Apache Camel

Я новичок в Apache Camel, и мне нужно выполнить задачу, в которой мне нужно маршалировать объект в файл XML. Я использую приведенный ниже код, но он не работает. Здесь foo.pojo — это пакет, в котором присутствуют аннотированные классы JAXB.

JaxbDataFormat jaxbDataFormat =  new JaxbDataFormat("foo.pojo");
from("direct:start").marshal(jaxbDataFormat).to("file:C:/Users/Anand.Jain/Desktop/hello/abc.xml").end();

person Anand    schedule 07.11.2014    source источник


Ответы (2)


Вариант 1. Настройте путь к контексту

JaxbDataFormat jaxbDataFormat =  new JaxbDataFormat("foo.pojo");

OptionFactory или jaxb.index должен быть определен в данном пакете, как объяснено класс-который-уже">здесь.

Вариант 2. Настройте класс(ы) для привязки

JAXBContext jaxbContext = JAXBContext.newInstance(MyAnnotatedClass.class);
JaxbDataFormat jaxbDataFormat = new JaxbDataFormat(jaxbContext);

Я предпочитаю Вариант 2.

person Peter Keller    schedule 07.11.2014

Вариант 1 в последнее время невозможен, так как конструктор JaxbDataFormat(String) недоступен как вы можете видеть в официальном javadoc

Документация по этому вопросу кажется устаревшей.

РЕДАКТИРОВАТЬ: БУДЬТЕ ОСТОРОЖНЫ, есть ДВА JaxbDataFormat

Я понял: в верблюжьей экосистеме есть ДВА jaxbDataFormat

  • один находится в пакете camel-core org.apache.camel.model.dataformat
  • другой в пакете camel-jaxb org.apache.camel.converter.jaxb
person MarcDeXeT    schedule 13.03.2015
comment
И вариант 2 тоже :/ из-за рефакторинга JaxbDataFormat. пакет org.apache.camel.converter.jaxb.JaxbDataFormat, похоже, перемещен в org.apache.camel.model.dataformat в camel-core 2.14..1 - person MarcDeXeT; 13.03.2015