1

以下の Endpoint_BPS_CreateCaseService/UpdateCaseService エンドポイントは両方とも、WSO2 BPS で実行されている一方向の BPEL サービスを指しています。WSO2 BPS は、呼び出されるとすぐに HTTP 202 承認済みメッセージを返します。

私が使用しているクライアント アプリケーションは、応答として有効な SOAP エンベロープを取得しない場合にエラーをスローするため、ESB でプロキシ サービスを使用して BPEL プロセスをラップします。

WSO2 ESB プロキシ サービスを使用して SOAP エンベロープを以下の Endpoint_BPS_* に転送し、クライアント アプリに SOAP エンベロープ応答を返すにはどうすればよいですか?

また、いずれかのエンドポイントが利用できないかタイムアウトになった場合に、faultSequence "ProcessFault" を実行したいと考えています。以前、上記の応答の問題を回避するために OUT_ONLY を使用しましたが、これはエンドポイントの問題を検出できないことを意味します。どういうわけか両方を行うことができない限り?

私が試した別のことは、メッセージのクローンを作成することですが、これは少し面倒でした。

どんな助けでも大歓迎です

<proxy xmlns="http://ws.apache.org/ns/synapse" name="BPSProxyService" transports="https,http" statistics="disable" trace="enable" startOnLoad="true">
   <target faultSequence="ProcessFault">
      <inSequence>
         <log level="full">
            <property name="MESSAGE" value="BEGIN BPSProxyService" />
         </log>
         <switch source="//*[local-name()='Operation']">
            <case regex="create">
               <send>
                  <endpoint key="Endpoint_BPS_CreateCaseService" />
               </send>
            </case>
            <case regex="update">
               <send>
                  <endpoint key="Endpoint_BPS_UpdateCaseService" />
               </send>
            </case>
         </switch>
      </inSequence>
      <outSequence>
         <property name="HTTP_SC" value="200" scope="axis2" />
         <class name="esb.mediators.InjectSOAPEnvelope" />
         <log level="full">
            <property name="MESSAGE" value="END BPSProxyService" />
         </log>
         <send />
         <drop />
      </outSequence>
   </target>
   <publishWSDL key="common/bpsproxyservice/bpsproxyservice.wsdl">
      <resource location="schema.xsd" key="common/schema_v2.xsd" />
   </publishWSDL>
</proxy>
4

2 に答える 2

6

プロキシ サービスの outSequence で BPS などのバックエンドから「HTTP/1.1 202 Accepted」応答を受信した場合、「202」応答を<property name="SC_ACCEPTED" value="false" scope="axis2"/>別のものに変更するステートメントが必要です。

例: <property name="SC_ACCEPTED" value="false" scope="axis2"/> <property name="HTTP_SC" value="200" scope="axis2"/> <payloadFactory media-type="xml"> <format> <response> <result>OK</result> </response> </format> <args/> </payloadFactory> <send/>

応答は、応答メッセージで「HTTP/1.1 200 OK」に変換されます。

于 2014-09-28T11:24:05.017 に答える
0

次のように、プロキシ サービスの inSequence に「OUT_ONLY」を指定して「FORCE_SC_ACCEPTED」パラメータを追加します。

<property name="FORCE_SC_ACCEPTED" value="true" scope="axis2" type="STRING"/>
<property name="OUT_ONLY" value="true" scope="default" type="STRING"/>

詳細については、次の記事を使用してください: http://mohanadarshan.wordpress.com/2013/05/05/out_only-scenario-in-proxy-service-wso2-esb/

于 2013-07-12T10:04:48.070 に答える