Camel cxf:如何将传入的消息封送到XML?

时间:2014-05-16 01:16:46

标签: jaxb apache-camel marshalling

我想将传入的消息序列化为XML。我是从camel-example-cxf-osgi示例开始的。

我的路线:

JaxbDataFormat jaxb = new JaxbDataFormat();

from("cxf:bean:reportIncident")
 .convertBodyTo(InputReportIncident.class)
 .marshal(jaxb)
 .bean(new MyBean2())
 .transform(constant(ok));

但是我收到了错误,我感到茫然:

java.io.IOException: javax.xml.bind.JAXBException: class org.apache.camel.example.reportincident.InputReportIncident nor any of its super class is  known to this context.

感谢任何帮助。 THX。

2 个答案:

答案 0 :(得分:2)

除了Daniel的解决方案之外,你可以使用

final JAXBContext jaxbContext = JAXBContext.newInstance(InputReportIncident.class);
final DataFormat jaxb = new JaxbDataFormat(jaxbContext);

如果没有ObjectFactory类,这会派上用场。有关此主题的更多常规信息,请参阅Jaxb: How do I generate ObjectFactory class?

答案 1 :(得分:1)

您需要指向保存jaxb类的包,例如

DataFormat jaxb = new JaxbDataFormat("com.acme.model");

例外情况说jaxb上下文并不知道如何编组类InputReportIncident.class