Camel中的XML到JSON路由无法正常工作

时间:2016-03-14 22:31:07

标签: json xml apache-camel

我正在尝试使用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()后没有任何反应。 我检查的事情是:

  • camel-xmljson功能启动并在OSGI中运行
  • 在我的pom文件xom,camel-xmljson等中添加的Apache XmlJSON网站中提到的依赖关系。

我在这里遗漏了什么?请帮忙

1 个答案:

答案 0 :(得分:0)

您的代码路由存在的问题是您的bean component处理程序方法驻留在路径构建器类中,而且您以触发该路径构建器类的另一个实例化的方式调用bean组件。

就个人而言,我会将convertXmlToJson移动到适当的实用程序类。这样你减少路由构建器和bean组件中的关注组合应该可以正常工作。

或者,如果你像这样调用bean组件,你的路径可能有效:

  .bean(this, "convertXmlToJson")