2016-10-02 9 views
3

私はカスタムのメディエータを記事http://wso2.com/library/2898/http://wso2.com/library/2936/で作成しました。wso2の動的カスタムメディエータのパラメータESB

それは次のようになります。

<inSequence> 
    <property expression="local-name($body/*[1])" name="method" scope="default" type="STRING"/> 
    <MyMediator> 
    <header>SomeHeader<header/> 
    <topic>SomeTopic</topic> 
    </MyMediator> 
</inSequence> 

それはうまく動作しますが、一つの問題は、私は動的ヘッダの値および/またはトピックメディエーターパラメータを変更することができますどのように解決しませんでしたか?

SomeHeaderの代わりにget-property('method')のようなものを入力しようとしましたが、それは文字列のような仲介者コードに渡され、ebsはそれを計算しませんでした。

私のカスタムメディエーターパラメーターの値をプロパティ値に変更する方法はありますか?

答えて

1

{}を使用すると、文字列がXPathリクエストであると言うことができます。あなたのメディエータで{}を見つけたら、org.apache.synapse.util.xpath.SynapseXPathを使用してください:xpath({}の間の文字列)とstringValueOf(theMessageContext)を使って新しいSynapseXPathを作成してください

0

現在の実装では、クラスメディエータのプロパティとして式をサポートしていません。詳細については、Jiraを参照してください。

1

カスタムメディエータには動的値を渡すことはできませんが、カスタムメディエータ内の任意のプロパティを読み取ることができます。

public boolean mediate(MessageContext mc) { 
    String value = (String) mc.getProperty("SomeHeader"); 
}