Wso2 ESB:如何在序列中提取“From”或“To”或“wsa:To”?

时间:2015-05-20 20:26:39

标签: web-services wso2 wso2esb

每当出现故障或异常时,我都会从proxyService调用故障序列。由于此故障序列对所有代理服务都是通用的,如何提取哪个proxyService称为故障序列?

例如,ProxyService A出现故障,并调用“faultSequence”。在FaultSequence代码中,我如何检测它确实被ProxyService A调用而不是另一个proxyService?

我尝试了一些不同的东西,例如提取标题,To,From,log mediators等,但我无法在日志中获得任何值。

我还看到一个简单的发送中介(发送没有端点或地址的中介)响应调用代理服务,因此故障序列必须知道发送消息的位置,即消息来自哪里从一开始。查看文档:{​​{3}},它表示邮件已发送到 wsa:To ,但我无法将该值提取到属性或日志中。 感谢你的帮助。

由于

1 个答案:

答案 0 :(得分:1)

您可以找到已调用的代理服务,查看名为“收件人”的属性:<property name="PROXY_NAME" expression="get-property('To')"/>

如果你这样记录:

<log level="custom">
  <property name="ProxyName" expression="get-property('PROXY_NAME')"/>
</log>

你应该有类似“services / MyProxyName”的东西

默认情况下,发送没有端点引用的介体会将当前响应发送回调用方,但您可以将当前消息发送到动态地址设置标题“To”。将当前邮件发送到http://host:port/myService的示例:

<header name="To" value="http://host:port/myService"/>
<send/>

如果要在inSequence中发回虚拟响应,则必须删除标题“To”:

<header name="To" action="remove"/>
<property name="RESPONSE" value="true"/>
<property name="NO_ENTITY_BODY" scope="axis2" action="remove"/>
<payloadFactory>
    <format>
        <ns:getQuoteResponse xmlns:ns="http://services.samples">
            ...
        </ns:getQuoteResponse>
    </format>
</payloadFactory>
<send/>