java - FuseESB 的奇怪输出

标签 java apache-camel apache-servicemix fuseesb

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

我正在使用 Camel 2.9 和 FuseESB 7.0.1.0.84。

我使用simple(“{body}”).getText()按照Camel手册获取传入请求

因此,我使用以下代码检查传入请求:

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 的值仅在一行中从肥皂请求更改为“”。此外,“xmlStringToParse equals ${body}”被打印为“xmlStringToParse equals”,而不打印${body}${body} 未打印在日志中。

可以看到日志输出如下:

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

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

最佳答案

I used simple(“{body}”).getText() to fetch incoming request as per Camel Manual

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

您应该以不同于您所做的方式获取消息正文,例如

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

或者如果使用bean参数绑定(bind),则可以绑定(bind)消息体,只需将参数声明为String类型即可

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

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

关于java - FuseESB 的奇怪输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14242483/

相关文章:

java - 与 Camel 集成的基于 REST 的服务中的 API 版本管理

java - JTextArea 中的控制台输出和用户输入

java - 使用 aerospikeTemplate java 将数据插入 aerospike

java - JideSplitPane比例

java - 改造 - 从 C# 获取的 json 中删除转义字符

java - 如何正确使用apache Camel中的直接组件?

spring-integration - 开源 ESB、Apache ServiceMix、Spring Integration?

java - Apache ServiceMix 入门指南

java - Camel文件组件: create a file and if already exist,移动它并用时间戳重命名它

ssl - 带 Camel 的 CXF - HTTPS