下面的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>
答案 0 :(得分:3)
当你的代理服务的outSequence中收到来自后端的'HTTP / 1.1 202 Accepted'响应(如BPS)时,你需要<property name="SC_ACCEPTED" value="false" scope="axis2"/>
语句将'202'响应修改为其他内容。
实施例:
<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”并带有响应消息。
答案 1 :(得分: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/