当我使用 WSO2 ESB 代理读取消息时,我需要定义一个特定的数据类型,然后应用某个 MessageBuilder(在axis2.xml 中定义)。
但是当 MessageBuilder 失败时(即我尝试使用 XMLBuilder 读取文本文件)我在控制台中得到一个异常,但我的“faultSequence”没有被调用。但是如果出现任何读取问题,我需要进行一定的错误处理。
如何从代理中的传输层 (MessageBuilder) 捕获异常?
当我使用 WSO2 ESB 代理读取消息时,我需要定义一个特定的数据类型,然后应用某个 MessageBuilder(在axis2.xml 中定义)。
但是当 MessageBuilder 失败时(即我尝试使用 XMLBuilder 读取文本文件)我在控制台中得到一个异常,但我的“faultSequence”没有被调用。但是如果出现任何读取问题,我需要进行一定的错误处理。
如何从代理中的传输层 (MessageBuilder) 捕获异常?
据我了解,您的要求是在传输层中捕获错误并在应用程序级别(即:中介级别)处理该错误。这意味着上面的层。
但我认为它违反了消息传递框架的分层架构。您应该在消息生成器本身捕获异常并抛出 Axis Fault,以便底层突触传输层(在本例中为 Axis2)将处理该错误。(它将向客户端发送故障。)
如果我们看一下 TCP 协议栈,那是常用的做法。
如果您真的想在中介级别过滤此错误。在消息生成器中捕获该错误并添加消息上下文属性或自定义消息并将其作为成功消息传递。并在中介级别进行过滤和处理。
但这又是丑陋的。:)
--Charith
Have you defined onError attribute in your configuration?
<sequence name="main" onError="myFaultSequence">
You can have more information in this sample.