2016-09-08 7 views
0

REST APIでout-sequenceに関するいくつかの問題に直面しています。私のユースケースは、私がjsonリクエストを受信し、サービスを呼び出すことであり、それが成功した場合は2番目のサービスを呼び出すことです。今すぐ最初のサービス応答のチェックをスキップしました。私はinSequenceとoutSequenceにそれぞれ終点を持っています。 問題はoutSequenceにあり、無限ループに入ります。WSO2 ESB OutSequenceに関する問題

私には何が欠けているか教えてください。

<?xml version="1.0" encoding="UTF-8"?> 
<api context = "/content_filter" hostname = "localhost" name = "Content_Filter" port = "8282" xmlns = "http://ws.apache.org/ns/synapse"> 
    <resource methods = "POST" protocol = "http" uri-template = "/test/content_filter"> 
     <inSequence> 
      <property action = "remove" description = "REST_URL_POSTFIX" name = "REST_URL_POSTFIX" scope = "axis2"/> 
      <payloadFactory description = "payLoad-modifier" media-type = "json"> 
       <format>{"SvcValidateRq": {"UserAccountInfo": {"UserID": "$1", "Password": "$2"}}}</format> 
       <args> 
        <arg evaluator = "json" expression = "$.UserAccountInfo.UserID"/> 
        <arg evaluator = "json" expression = "$.UserAccountInfo.Password"/> 
       </args> 
      </payloadFactory> 
      <property description = "message_type" name = "messageType" scope = "default" type = "STRING" value = "application/json"/> 
      <property description = "content_type" name = "ContentType" scope = "axis2" type = "STRING" value = "application/json"/> 
      <send> 
       <endpoint> 
        <address format = "rest" trace = "disable" uri = "http://10.202.17.86:8085/UserInfo/rest/v1/login"/> 
       </endpoint> 
      </send> 
     </inSequence> 
     <outSequence> 
      <log description = "output_logger" level = "full"/> 
      <property description = "output_content" name = "ContentType" scope = "axis2" type = "STRING" value = "application/json"/> 
      <payloadFactory description = "payload" media-type = "json"> 
       <format>{"SvcValidateRq": {"UserAccountInfo": {"UserID": "f987d3b2-f5bf-4cc7-83e2-c08322dfaac0", "Password": "23776BD42FEB4F06812F30A01FC7F6FD"}}}</format> 
       <args/> 
      </payloadFactory> 
      <header description = "TimeStamp" name = "com.ugo.wallet.envelope.TimeStamp" scope = "transport" value = "7672387"/> 
      <header description = "CorrelationID" name = "com.ugo.wallet.envelope.CorrelationID" scope = "transport" value = "9384982948"/> 
      <header description = "TraceabilityID" name = "com.ugo.wallet.envelope.TraceabilityID" scope = "transport" value = "394892349"/> 
      <send> 
       <endpoint> 
        <address format = "rest" trace = "disable" uri = "http://10.202.17.86:8085/UserInfo/rest/v1/login"/> 
       </endpoint> 
      </send> 
     </outSequence> 
     <faultSequence> 
      <log description = "error_log" level = "full"/> 
      <property description = "error_content" name = "ContentType" scope = "axis2" type = "STRING" value = "application/json"/> 
      <send/> 
     </faultSequence> 
    </resource> 
</api> 

以下は出力スタックトレースです。

To: http://www.w3.org/2005/08/addressing/anonymous, WSAction: , SOAPAction: , MessageID: urn:uuid:77505542-4950-406c-95ff-b75541f03683, Direction: response, Payload: {"SvcValidateRs":{"Status":{"StatusCode":2,"Severity":"Error","StatusDesc":"Error","AdditionalStatus":[{"StatusCode":2036,"Severity":"Error","StatusDesc":"Invalid LoginID/Password","RefInfo":[{"KeyName":"FAILURE_INFO","KeyValue":["LoginID/Password is invalid."]},{"KeyName":"ORIGIN","KeyValue":["UserInfo.REST"]}]}]}}} {org.apache.synapse.mediators.builtin.LogMediator} 
To: http://www.w3.org/2005/08/addressing/anonymous, WSAction: , SOAPAction: , MessageID: urn:uuid:cdfc7f8b-0517-407f-a081-5196610853c0, Direction: response, Payload: {"SvcValidateRs":{"Status":{"StatusCode":2,"Severity":"Error","StatusDesc":"Error","AdditionalStatus":[{"StatusCode":2036,"Severity":"Error","StatusDesc":"Invalid LoginID/Password","RefInfo":[{"KeyName":"FAILURE_INFO","KeyValue":["LoginID/Password is invalid."]},{"KeyName":"ORIGIN","KeyValue":["UserInfo.REST"]}]}]}}} {org.apache.synapse.mediators.builtin.LogMediator} 
To: http://www.w3.org/2005/08/addressing/anonymous, WSAction: , SOAPAction: , MessageID: urn:uuid:049dd134-b29d-4abe-9653-0f3501a76e0a, Direction: response, Payload: {"SvcValidateRs":{"Status":{"StatusCode":2,"Severity":"Error","StatusDesc":"Error","AdditionalStatus":[{"StatusCode":2036,"Severity":"Error","StatusDesc":"Invalid LoginID/Password","RefInfo":[{"KeyName":"FAILURE_INFO","KeyValue":["LoginID/Password is invalid."]},{"KeyName":"ORIGIN","KeyValue":["UserInfo.REST"]}]}]}}} {org.apache.synapse.mediators.builtin.LogMediator} 
To: http://www.w3.org/2005/08/addressing/anonymous, WSAction: , SOAPAction: , MessageID: urn:uuid:5156f9e8-5d6b-432b-b016-59175583b663, Direction: response, Payload: {"SvcValidateRs":{"Status":{"StatusCode":2,"Severity":"Error","StatusDesc":"Error","AdditionalStatus":[{"StatusCode":2036,"Severity":"Error","StatusDesc":"Invalid LoginID/Password","RefInfo":[{"KeyName":"FAILURE_INFO","KeyValue":["LoginID/Password is invalid."]},{"KeyName":"ORIGIN","KeyValue":["UserInfo.REST"]}]}]}}} {org.apache.synapse.mediators.builtin.LogMediator} 

答えて

0

アウトシーケンスから次のものを削除する必要があります。 ESBでは、応答が受信されると、それが原因でトリガーされるため、Infiniteループが表示されます。これを避けるために、順番にメディエータを送信する代わりにコールメディエータを使用することができます。

<send> 
<endpoint> 
<address format = "rest" trace = "disable" uri = http://10.202.17.86:8085/UserInfo/rest/v1/login"/> 
</endpoint> 
</send> 

以下は、ユースケースをカバーするのに役立つ素晴らしいテクニックです。あなたの応答のための

http://wso2.com/library/articles/2014/02/service-orchestration-with-wso2-esb/

+0

ご回答いただきありがとうございます。 –

0

感謝。 わかりませんが、コールメディエーターを使用すると、サービスコールは行われません。しかし、物事を送るメディエーターと一緒に働く。 問題を解決することができます。inSequenceとoutSequenceの両方のURLが同じです。私はoutSequenceのURLを変更しましたが、今は正常に動作しています。

関連する問題