0

単一のフローで 2 つの Web サービスを呼び出す必要があるミュールを使用して、安らかなプロキシを構築しています。最初の WS への呼び出しはユーザー認証を行うことになっています。認証が成功した場合、元のHTTP要求は 2 番目の WS 呼び出しによって正しい REST エンドポイントにプロキシされます。最初の認証 Web サービス呼び出しが戻った後に問題が発生しました。この呼び出しが戻ると、元の HTTP 要求は失われます。

受信した元の HTTP 要求を保持し、最初の認証 Web サービス呼び出しでそれを保存し、2 番目の Web サービス呼び出しの直前に元のヘッダーを設定するにはどうすればよいですか?

これを達成するための正しいアプローチを私に提案してください。

4

4 に答える 4

1

この場合、エンリッチャーを使用することをお勧めします。

ここでのシナリオは、最初の呼び出しが認証のみであるように見えます。そのため、エンリッチャーを使用して最初の WS を呼び出し、応答をフロー変数として保存します。

このようにして、ペイロードとすべてのプロパティを元のリクエストと同じままにできます。強化されたフロー変数を使用して、2 番目の WS を呼び出すかどうかを決定できます。

サンプルフローはこちら。

<flow>
    <http:inbound  ... />
    ...
    <enricher target="#[variable:authenticationSuccessful]" source="#[payload]" >
        <processor-chain>
            <!--  YOu call to first WS and then the status whether authentication is succesful or not.
        </processor-chain>
    </enricher>

    <choice>
        <when expression="#[flowVars['authenticationSuccessful']]" />
            <http:outbound  to second WS />
        </when>
        <otherwise>
            <logger level="INFO" message="Authentication Failed" />
        </otherwise>
    </choice>
</flow>

お役に立てれば。

于 2015-03-10T17:47:40.757 に答える
0

Mohan が提案したように、インバウンド プロパティを変数に保存します。Mule には 2 種類の変数があります:- 1) フロー変数 2) セッション変数

したがって、要件に従って、トランスポートバリアを越えてインバウンドプロパティを保持したい場合は、グローバルであり、どのフローでも使用できるため、セッション変数を使用します

一方、フロー変数は、それが定義されているフローに対してローカルです。

これをチェックして、変数に保存する方法を確認できます:- http://www.mulesoft.org/documentation/display/current/Variable+Transformer+Reference

于 2015-03-10T03:41:05.780 に答える