2016-09-04 10 views
1

私はDSS応答上で反復を行うが、以下反復(3.2.2)WSO2 ESBにおける応答(4.8.1)は

期待どおりに動作していないです期待ペイロードであるとDSSを求めるように動作していません:DSSから

<payloadFactory media-type="xml"> 
     <format> 
     <p:getNominaIDDetails xmlns:p="http://ws.wso2.org/dataservice"> 
      <xs:column1 xmlns:xs="http://ws.wso2.org/dataservice">$1</xs:column1> 
      <xs:column2 xmlns:xs="http://ws.wso2.org/dataservice">$2</xs:column2> 
      <xs:column3 xmlns:xs="http://ws.wso2.org/dataservice">$3</xs:column3> 
      <xs:column4 xmlns:xs="http://ws.wso2.org/dataservice">$4</xs:column4> 
     </p:getNominaIDDetails> 
     </format> 
     <args> 
     <arg xmlns:ns="http://org.apache.synapse/xsd" expression="get-property('column1')" evaluator="xml"></arg> 
     <arg xmlns:ns="http://org.apache.synapse/xsd" expression="get-property('column2')" evaluator="xml"></arg> 
     <arg xmlns:ns="http://org.apache.synapse/xsd" expression="get-property('column3')" evaluator="xml"></arg> 
     <arg xmlns:ns="http://org.apache.synapse/xsd" expression="get-property('column4')" evaluator="xml"></arg> 
     </args> 
    </payloadFactory> 

    <header name="Action" scope="default" value="urn:xxxxxxx"></header> 
    <call> 
     <endpoint key="gov:/dss/endpoint"></endpoint> 
    </call> 
    <filter xmlns:ns="http://org.apache.synapse/xsd" 
      xmlns:ds="http://ws.wso2.org/dataservice" 
      xpath="get-property('db_count')&gt;0"> 
     <then> 
     <iterate id="xxx" 
        preservePayload="true" 
        attachPath="//ds:xxxx" 
        expression="//ds:xxx/ds:xxx"> 
      <target sequence="My_seq"> 
      </target> 
     </iterate> 
     </then> 
     <else> 
     <drop/> 
     </else> 
    </filter> 

応答は次のとおりです。上記の応答は、最初の反復で完了し、グローバルtimeout.Below後に期限が切れるすべてのメッセージを残して

<response xmlns="http://ws.wso2.org/dataservice">  
     <id> 
      <column1>234</column1> 
      <column1>4455</column1> 
      <column1>567778</column1> 
     </id> 
     <id> 
      <column1>546</column1> 
      <column1>56866</column1> 
      <column1>464453</column1> 
     </id> 
     <id> 
      <column1>546</column1> 
      <column1>56866</column1> 
      <column1>464453</column1> 
     </id> 
    </response> 

は、最初の後ログです反復:

{org.apache.synapse.mediators.builtin.LogMediator} 
TID: [0] [ESB] [2016-09-04 06:26:13,471] WARN {org.apache.synapse.core.axis2.SynapseCallbackReceiver} - Synapse received a response for the request with message Id : urn:uuid:c62d7dae-5290-49d1-b1bd-b5d2dcba7e04 But a callback is not registered (anymore) to process this response {org.apache.synapse.core.axis2.SynapseCallbackReceiver} 
TID: [0] [ESB] [2016-09-04 06:26:42,144] WARN {org.apache.synapse.core.axis2.TimeoutHandler} - Expiring message ID : urn:uuid:36df3897-73be-4bc3-a434-aaab618c7ce3; dropping message after global timeout of : 180 seconds {org.apache.synapse.core.axis2.TimeoutHandler} 
TID: [0] [ESB] [2016-09-04 06:26:42,145] WARN {org.apache.synapse.core.axis2.TimeoutHandler} - Expiring message ID : urn:uuid:d8ec8998-95c6-4d70-9e33-c11bda271e90; dropping message after global timeout of : 180 seconds {org.apache.synapse.core.axis2.TimeoutHandler} 

注:イテレータの内部で以下の操作を行う(シーケンス= "My_seq")

銀行のコールをperfoming - > DSSコール - > SAPコールコールmeditorに

<?xml version="1.0" encoding="UTF-8"?> 
<sequence xmlns="http://ws.apache.org/ns/synapse" name="My_seq" > 
    <property xmlns:ns="http://org.apache.synapse/xsd" xmlns:ds="http://ws.wso2.org/dataservice" name="id" expression="//ds:dss_response/ds:Id" scope="default" type="STRING"/> 
    <payloadFactory media-type="xml"> 
     <format> 
      <h:opertion xmlns:h="http://ws.wso2.org/xxxxxx"> 
       <h2h:id>$1</h2h:id> 
      </h:opertion> 
     </format> 
     <args> 
      <arg xmlns:ns="http://org.apache.synapse/xsd" evaluator="xml" expression="get-property('id')"/> 
     </args> 
    </payloadFactory> 
    <property xmlns:ns="http://org.apache.synapse/xsd" name="Authorization" expression="fn:concat('Basic ', base64Encode('xxxxx:xxxxxxxx'))" scope="transport" type="STRING"/> 
    <property name="ContentType" value="application/soap+xml" scope="axis2" type="STRING"/> 
    <property name="messageType" value="application/soap+xml" scope="axis2" type="STRING"/> 
    <call> 
     <endpoint key="gov:/endpoint"/> 
    </call> 
    <sequence key="next_sequence_to_be_DSS_then_SAP"/> 
</sequence> 
+0

あなたの設定は正常です。ワイヤーログを有効にして、質問をログで更新できますか? http://mytecheye.blogspot.com/2013/09/wso2-esb-all-about-wire-logs.html – Bee

+0

あなたの「My_seq」設定を投稿する – Bee

+0

@Bhathiyaが私の有線ログとして大きすぎると私は共有できないと思うすべてのログとコードを共有する他の方法はありますか? – Siddu

答えて

1
を使用して

私はこれがあなたの要求に合っていると信じています。ここでは、すべての要求が成功した場合にのみ着信応答のステータスをチェックし、クライアントにOKを送信します。

<api xmlns="http://ws.apache.org/ns/synapse" name="MyAPI" context="/myapi"> 
    <resource methods="POST GET" url-mapping="/"> 
     <inSequence> 
     <call blocking="true"> 
      <endpoint> 
       <http uri-template="http://www.mocky.io/v2/57cd6f422d00000101b15868"/> 
      </endpoint> 
     </call> 
     <property name="Staus" value="OK" type="STRING"/> 
     <iterate xmlns:ds="http://ws.wso2.org/dataservice" id="xxx" preservePayload="true" expression="//ds:response/ds:id"> 
      <target> 
       <sequence> 
        <send> 
        <endpoint> 
         <http uri-template="http://www.mocky.io/v2/57cd70c22d00002401b1586c"/> 
        </endpoint> 
        </send> 
       </sequence> 
      </target> 
     </iterate> 
     </inSequence> 
     <outSequence> 
     <filter source="$axis2:HTTP_SC" regex="200"> 
      <then/> 
      <else> 
       <property name="Staus" value="NOT OK" type="STRING"/> 
      </else> 
     </filter> 
     <aggregate id="xxx"> 
      <completeCondition> 
       <messageCount/> 
      </completeCondition> 
      <onComplete xmlns:ds="http://ws.wso2.org/dataservice" expression="/"> 
       <log level="custom"> 
        <property name="Final Staus" expression="$ctx:Staus"/> 
       </log> 
       <payloadFactory media-type="xml"> 
        <format> 
        <status>$1</status> 
        </format> 
        <args> 
        <arg evaluator="xml" expression="$ctx:Status"/> 
        </args> 
       </payloadFactory> 
       <send/> 
      </onComplete> 
     </aggregate> 
     </outSequence> 
    </resource> 
</api> 
+0

私は応答を除いて、銀行からの応答を得て、SAPに送り返して変換します...これは1回の反復です。多くの反復でこれが起こるはずです。しかし、私の場合それは最初の反復で停止しています – Siddu

+0

最初の反復では、2番目の反復のタイムアウトが起こっているか、強制的に中断された状態に入る間に応答しています – Siddu

+0

どのような応答を期待していますか?それは総合的な反応ですか? – Bee

関連する問題