来自FuseESB的奇怪输出

时间:2013-01-09 17:03:48

标签: java apache-camel apache-servicemix fuseesb

我正在解析请求。 我在Java中开发了用于解析传入请求的路由。

我使用的是Camel 2.9和FuseESB 7.0.1.0.84。

我使用simple(“{body}”).getText()按照Camel Manual

获取传入请求

所以我使用以下代码检查传入的请求:

if (xmlStringToParse == null || xmlStringToParse.equals("") || xmlStringToParse.equals("${body}")) {

            parsedXMLPath = "<error>Incoming request is as folows:"
                    + "\nValue of xmlStringToParse: " + xmlStringToParse
                    + "\n xmlStringToParse is empty: " + (xmlStringToParse.equals(""))
                   + "\n xmlStringToParse equals ${body}: " + (xmlStringToParse.equals("${body}"))
                    + "\nAgain checking incoming request:\n" + xmlStringToParse
                    + "</error>";
        }

xmlStringToParse = simple(“${body}”).getText()

观察到奇怪的事件:

xmlStringToParse的值仅在从soap请求到“”的一行中更改。此外,“xmlStringToParse equals ${body}”打印为“xmlStringToParse equals”而不打印${body}${body}未打印在日志中。

您可以在以下位置找到日志输出:

   <error>
    Value of xmlStringToParse: <somesoapRequest>
    xmlStringToParse is empty: false
   xmlStringToParse equals : true
  Again checking incoming request:
 </error>

有谁能告诉我如何解决这个问题以及这种奇怪行为的原因?

1 个答案:

答案 0 :(得分:2)

  

我使用简单(“{body}”)。getText()根据Camel手册获取传入请求

你在哪里看到的?你有链接吗?

您应该以不同于您的方式获取邮件正文,例如

String body = exchange.getIn().getBody(String.class);

或者,如果使用bean参数绑定,则可以绑定消息体并仅将参数声明为String类型

public void foo(String body) {
   ...
}

在Camel文档中查看更多详细信息,例如:http://camel.apache.org/bean-binding.html