WSO2 ESB捕获传输异常(MessageBuilder)

时间:2012-11-19 09:54:55

标签: exception-handling wso2 wso2esb synapse

当我使用WSO2 ESB代理读取消息时,我需要定义一个特定的数据类型,然后应用某个MessageBuilder(在axis2.xml中定义)。

但是当MessageBuilder失败时(即我尝试用XMLBuilder读取文本文件)我在控制台中得到一个异常,但是我的“faultSequence”没有被调用。但是如果出现任何读取问题,我需要做一些错误处理。

如何从代理中的传输层(MessageBuilder)中捕获异常?

2 个答案:

答案 0 :(得分:1)

据我所知,您的要求是捕获传输层中的错误并在应用程序级别处理该错误(即:中介级别)。这意味着上面的层。

但我认为这违反了消息传递框架的分层架构。您应该在Message Builder本身捕获Exception并抛出Axis Fault,以便底层的synapse传输层(在本例中为Axis2)将处理该错误。 (它会向客户发送错误。)

如果我们查看TCP协议栈,这是常用的做法。

如果您确实想要在中介级别过滤此错误。在Message Builder中捕获该错误并添加消息上下文属性或自定义消息并将其作为成功消息传递。并在中介级别进行过滤并处理。

但这又是丑陋的。 :)

- Charith

答案 1 :(得分:-1)

您是否在配置中定义了onError属性?

 <sequence name="main" onError="myFaultSequence">

您可以在此sample中获得更多信息。