以下の例で述べたように、ESB でシーケンスを記述し、ペイロード ファクトリを使用してペイロード データを入力しようとしています。
<payloadFactory>
<format>
<p:echoInt xmlns:p="http://echo.services.core.carbon.wso2.org">
<in xmlns="">$1</in>
</p:echoInt>
</format>
<args>
<arg xmlns:ns="http://org.apache.synapse/xsd" expression="an-xml-formatted-string"/>
</args>
</payloadFactory>
<send>
<endpoint>
<address uri="http://noon101:8280/services/echo" format="soap11"/>
</endpoint>
</send>
このペイロードをサービスに送信すると文字列が xml としてフォーマットされるため、サービスは xml パラメータを解析しようとし、(正確な理由がわかりません) Web サービス メソッドが呼び出されません。このリンクでは、cdata を使用すると、パーサーが xml 形式の文字列を解析せず、問題が発生しないことが示されています。
しかし問題は、Payload Factory メディエーターがそのコンテンツで Cdata を受け入れないことです。以下に示すように Payload Factory の構成を記述すると、そこから CDATA キーワードが削除され、問題が発生します。
<payloadFactory>
<format>
<p:echoInt xmlns:p="http://echo.services.core.carbon.wso2.org">
<in xmlns=""> <![CDATA[ $1 ]]> </in>
</p:echoInt>
</format>
<args>
<arg xmlns:ns="http://org.apache.synapse/xsd" expression="an-xml-formatted-string"/>
</args>
</payloadFactory>
この問題の解決策は何でしょうか? ペイロードを設定する他のメディエーターまたは回避策を高く評価します。