我正在尝试使用camel路由器将XML消息转换为JSON并将其保存到文件中。从源获取XML消息并将其保存到目标文件等工作正常。但是当我尝试转换为JSON时,它无效。我甚至没有在日志中抛出任何错误/异常。我在OSGI容器上运行
public class CamelRouter extends RouteBuilder {
@Override
public void configure() throws Exception {
from("file://C:/test/Sample.xml")
.routeId("file-to-file")
.log(LoggingLevel.INFO,"RouteID file-to-file !!!!! starting")
//From XML to JSON
.bean(CamelRouter.class, "convertXmlToJson")
.log(LoggingLevel.INFO,"From XML to JSON !!!!! Done")
.to("file://C:/test/JSONMessages")
.log(LoggingLevel.INFO,"Converted Message Saved successfully");
将XML转换为JSON convertXmlToJson 的bean方法如下所示
public String convertXmlToJson(String msg) {
log.info("NOW calling JSON conversion");
String jsonStr = null;
log.info("MESSAGE conversion starting : "); //After this message nothing happened
XMLSerializer xmlReader = new XMLSerializer();
log.info("MESSAGE before conversion : " + msg);
jsonStr = xmlReader.read(msg).toString();
log.info("JSON data : " + jsonObj.toString());
return jsonObj.toString();
}
有谁知道为什么它没有执行XMLSerializer部分。我试过这种方法,因为camel-xmljson的 marshal()。xmljson()调用也给了我相同的结果。在我的骆驼路由中调用xmljson()后没有任何反应。 我检查的事情是:
我在这里遗漏了什么?请帮忙
答案 0 :(得分:0)
您的代码路由存在的问题是您的bean component处理程序方法驻留在路径构建器类中,而且您以触发该路径构建器类的另一个实例化的方式调用bean组件。
就个人而言,我会将convertXmlToJson
移动到适当的实用程序类。这样你减少路由构建器和bean组件中的关注组合应该可以正常工作。
或者,如果你像这样调用bean组件,你的路径可能有效:
.bean(this, "convertXmlToJson")