1

WSO2 ESB 4.7.0 に慣れようとしています。簡単なテストとして、プロキシ サービスを使用して JSON を XML に変換したいと思います。今のところ、ESB が暗黙的に JSON を XML に変換することを理解しています。変換された XML メッセージをファイルに書き込むことを目的として、単純なメディエーションを作成しました。残念ながら、JSON から XML への変換の結果は空です (ファイルにデータがありません)。WSO2 の JSON 機能に関して何か間違っていることを理解していますか、それとも私のメディエーションに何か問題がありますか?

私の調停:

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse" name="MockJsonTest" transports="http https" startOnLoad="true" trace="disable">
<target>
    <inSequence>
        <property name="messageType" value="text/xml" scope="axis2" type="STRING"/>
        <property name="ContentType" value="text/xml" scope="axis2" type="STRING"/>
        <log level="full"/>
        <property name="OUT_ONLY" value="true" scope="default" type="STRING"/>
        <property name="transport.vfs.ReplyFileName" value="filename.xml" scope="transport" type="STRING"/>
        <send>
            <endpoint>
                <address uri="vfs:file:///C:/wso2">
                    <timeout>
                        <duration>0</duration>
                        <responseAction>discard</responseAction>
                    </timeout>
                </address>
            </endpoint>
        </send>
    </inSequence>
    <outSequence/>
    <faultSequence/>
</target>

私のcurlクライアントは、JSONデータを投稿します:

curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"kind":"plus#person"}' http://mycomputer:8280/services/MockJsonTest

axis2.xml では、JSON の両方のフォーマッターを試しました。

    <!--messageFormatter contentType="application/json"
                      class="org.apache.axis2.json.JSONMessageFormatter"/-->
    <messageFormatter contentType="application/json"
                      class="org.apache.axis2.json.JSONStreamFormatter"/>

敬具、

ヘイコ

4

1 に答える 1

1

あなたのシナリオをテストしたところ、次のように正しい出力が得られました。

<kind>plus#person</kind>

以下は私のプロキシサービスです。

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="MockJsonTest"
       transports="https,http"
       statistics="disable"
       trace="disable"
       startOnLoad="true">
   <target>
      <inSequence>
         <property name="messageType" value="text/xml" scope="axis2" type="STRING"/>
         <property name="ContentType" value="text/xml" scope="axis2" type="STRING"/>
         <log level="full"/>
         <property name="OUT_ONLY" value="true" scope="default" type="STRING"/>
         <property name="transport.vfs.ReplyFileName"
                   value="filename.xml"
                   scope="transport"
                   type="STRING"/>
         <send>
            <endpoint>
               <address uri="vfs:file:///home/user/test">
                  <timeout>
                     <duration>30000</duration>
                     <responseAction>discard</responseAction>
                  </timeout>
               </address>
            </endpoint>
         </send>
      </inSequence>
   </target>
   <description/>
</proxy>

プロキシ サービスに小さな xml 形式のエラーがあるようです。上記と比べてみてください。ソース ビューでプロキシを指定する場合は、必ず最後に [デザイン ビューに切り替える] をクリックしてください。フォーマットエラーがある場合は、警告が表示されます。

あなたが提供したのと同じcurlコマンドを使用しました。次のように、axis2.xml に ESB 4.7.0 のデフォルトの JSON メッセージ フォーマッターとビルダーがあります。

<!--JSONBuilder Message Formatters-->
        <messageFormatter contentType="application/json"
                          class="org.apache.axis2.json.JSONMessageFormatter"/>
        <!--messageFormatter contentType="application/json"
                          class="org.apache.axis2.json.JSONStreamFormatter"/-->
        <messageFormatter contentType="application/json/badgerfish"
                          class="org.apache.axis2.json.JSONBadgerfishMessageFormatter"/>
        <messageFormatter contentType="text/javascript"
                          class="org.apache.axis2.json.JSONMessageFormatter"/>
于 2013-09-09T06:59:44.697 に答える