0

リクエストの解析に取り組んでいます。着信要求を解析するために Java でルートを開発しました。

FuseESB 7.0.1.0.84 で Camel 2.9 を使用しています。

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 リクエストから "" に 1 行で変更されます。また、「<code>xmlStringToParse equals ${body}」は、print せずに「<code>xmlStringToParse equals」と出力されます${body}${body}ログには出力されません。

ログ出力は次のとおりです。

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

この問題を解決する方法と、この奇妙な動作の理由を誰か教えてもらえますか?

4

1 に答える 1

2

Camel Manualに従って、simple(“ {body}”)。getText()を使用して着信リクエストをフェッチしました

どこで見ましたか?リンクはありますか?

メッセージ本文は、自分が行うこととは別の方法で取得する必要があります。

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

または、Beanパラメータバインディングを使用する場合は、メッセージ本文をバインドして、パラメータを文字列型として宣言するだけです。

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

詳細については、次のCamelドキュメントを参照してください。http://camel.apache.org/bean-binding.html

于 2013-01-10T08:55:14.687 に答える