0

Mule REST モジュールでユースケースを満たすのに少し苦労しています。templateUri と HTTP メソッドに応じて異なる変換をしたいと思います。

これが私の構成です:

    <flow name="http-interface">
        <http:inbound-endpoint address="http://localhost:8555" exchange-pattern="request-response"/>

        <rest:router templateUri="/schedule">
            <rest:post>
                <mxml:schema-validation-filter schemaLocations="xsd/scheduler.xsd" returnResult="true"/>
                <mxml:jaxb-xml-to-object-transformer jaxbContext-ref="jaxb-context"/>
                <vm:outbound-endpoint path="addjob"/>
            </rest:post>
        </rest:router>

        <choice-exception-strategy>
            <catch-exception-strategy when="exception.causedBy(org.mule.api.routing.filter.FilterUnacceptedException)">
                <logger level="ERROR" message="FilterUnacceptedException #[message]"/>
                <set-payload value="An error occurred while validating request. Please check the XML payload"/>
                <set-property propertyName="http.status" value="400"/>
            </catch-exception-strategy>
            <catch-exception-strategy when="exception.causedBy(java.lang.NullPointerException)">
                <logger level="ERROR" message="NullPointerException #[message]"/>
                <set-payload value="An error occurred while validating request. Please check the XML payload"/>
                <set-property propertyName="http.status" value="400"/>
            </catch-exception-strategy>
        </choice-exception-strategy>
    </flow>

無効な XML がエンドポイントに送信されると、NestedProcessorChain.processWithExtraProperties で NullPointerException が発生します。したがって、この例外の厄介なキャッチ (理想的ではありません)。

私の IDE では、フロー内の rest:router と、rest:post 要素内の mxml フィルター/トランスフォーマーの両方でスキーマ検証エラーが発生します。受信エンドポイント内に rest:router を配置することで、最初のものを削除できます。結果は同じで、ほとんどの例にはこれがありません

フィルター/変換を VM エンドポイントの別のフローに移動しようとしました。検証は問題ありませんが、HTTP エラー コードとクライアントへの応答を取得する方法がわかりません。

どんな助けでも大歓迎です、アルフィー。

4

1 に答える 1

1

NPE は NestedProcessorChain.processWithExtraProperties は Mule REST Router のバグです。ここで問題を提起しましたが、REST Router はサポートされなくなったようです。 一般に、 <rest:router>要素
に記述されていない HTTP メソッドで URI を呼び出すと、NPE がスローされます。予想される例外はUnsupportedHttpVerbExceptionです。詳細については、ブログ投稿 の 1 つで問題を説明し、Mule REST Router の修正バージョンを提供しました。


VM エンドポイントを使用する代わりに、<flow-ref />コンポーネントを使用して別のフローを呼び出すか、 <processor-chain />でラップします。

于 2013-10-30T10:21:59.377 に答える