我想将传入的消息序列化为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。
答案 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
。