1

セッション変数「servicerequested」がある Mule フローがあり、この変数には、customerservice、accountservice、transferservice などのさまざまな値を設定できます。

このサービス オプションに基づくポートの情報を含むプロパティ ファイル mule.dev.properties があります。

customerservice=9914 
accountservice=9918
transferservice=9919

HTTP アウトバウンド エンドポイントで、変数 requestedservice に基づいて、このプロパティ ファイルからポートを選択する必要があります。以下のようにMELを使用してみました:

${#[header:session:servicerequested]}

<http:outbound-endpoint exchange-pattern="request-response" host="localhost" 
port="${#[header:session:servicerequested]}" path="services" method="GET"/>

しかし、それは例外をスローします

Template Endpoint "http://localhost:session:servicerequested]/services" resolved 
into a Malformed endpoint "http://localhost:session:servicerequested]/services"

MEL を使用してプロパティ ファイルを動的に読み取る方法を教えてください。

4

2 に答える 2

0

あなたの投稿から、セッション変数は、プロパティ ファイルの値が選択される条件であることがわかりました。

しかし問題は、アプリケーションがデプロイされるとプロパティ ファイルが読み込まれることです。ただし、セッション変数はフロー実行中にのみ使用できます。

そのため、式 ${#[header:session:servicerequested]} は機能しません。これは、プロパティ ファイルの値が参照される時点で、#[MEL] がまだ使用できないためです。

可能な解決策は、プロパティをいくつかのフロー変数にロードし、セッション変数の値に基づいてそれらのフロー変数の 1 つを選択することです。

また、これらすべてが 1 つの MEL ステートメントで発生することはありません。

以下のようにプロパティをフロー変数として保存してみてください

<set-variable variableName="prop1" value="${property key from properties file}" />
<set-variable variableName="prop2" value="${property key from properties file}" />

次に、カスタム コンポーネントまたは groovy を構築して、セッション変数を評価し、フロー変数の 1 つを選択してから、ポート属性でその値を使用します。

お役に立てれば :)

于 2013-06-02T22:26:58.157 に答える