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