0

私はムンバイ出身の Ashish で、Apache Camel は初めてです。

現在、SOAP リクエストをスキャンし、リクエストを適切な URI にリダイレクトするルートを XML で構築しています。

私の SOAP リクエストは次のとおりです。

  <service xmlns="http://ws.madcomum.comprova.com">
     <request>
        <keysValues>
           <item>
              <bytesValue
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
              <dateValue
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
              <doubleValue
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
              <key>validatesOriginIntegrity</key>
              <longValue
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
              <stringValue>z4x/FOOR+EPQ0vD9+itPSCBeNR4=</stringValue>
           </item>
        </keysValues>
        <actionId>1</actionId>
        <clientId>ARGO</clientId>
     </request>
  </service>

この SOAP エンベロープから、Camel Route を使用して actionId タグの値を解析したいと考えています。actionId の値が 1 の場合、ルートを callService にリダイレクトする必要があります。それ以外の場合は、別のサービスにリダイレクトします。

次のようにルートのロジックを開発しました。

<route>
        <from uri="cxf:bean:comprovaWS?dataFormat=MESSAGE" />   

            <when>
                <xpath>//actionId=1</xpath>
                <to uri="log:input" />

                <to ref="callService" />
                <to uri="log:output" />
            </when>

            <otherwise>
                <to uri="log:input" />
                <to ref="otherService"/>
                <to uri="log:output" />
            </otherwise>

        </choice>
    </route>

しかし、このロジックは機能していません。私のルートに誤りはありますか?

私は Java 派ですが、ここでは Java を使いたくありません。Camel自体に頼りたい。

できるだけ早く助けてください。

よろしく、

アシッシュ

4

1 に答える 1

0

xpath を使用すると、95% の人が名前空間に問題を抱えていることがよくあります。SOAP メッセージは名前空間「http://ws.madcomum.comprova.com」を使用して定義されます。xpath 式は、この名前空間を使用して機能させる必要があります。

詳細については、http: //camel.apache.org/xpathを参照してください。XML 構成の使用セクションに例があります。

また、MESSAGE モードで CXF を使用する場合は、メッセージがストリーム ベースであるため、ストリーム キャッシングについてお読みください: http://camel.apache.org/stream-caching.html

于 2012-12-29T08:57:43.217 に答える