2012-11-19 35 views
1

當我使用WSO2 ESB代理讀取消息時,需要定義特定的數據類型,然後應用某個MessageBuilder(在axis2.xml中定義)。WSO2 ESB捕獲傳輸異常(MessageBuilder)

但是,當MessageBuilder失敗(即我嘗試使用XMLBuilder讀取文本文件)時,控制檯中出現異常,但未調用「faultSequence」。但是如果有任何讀取問題,我需要進行一定的錯誤處理。

我如何能趕上從代理傳輸層(MessageBuilder)異常?

回答

-1

您是否在配置中定義了onError屬性?

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

您可以在此sample有更多的信息。

+0

是的,我做到了,但該序列尚未調用,異常由代理文件的讀期間已發生......這是我的問題...... – FiveO

0

據我所知,您的要求是捕獲傳輸層中的錯誤並處理應用程序級別的錯誤(即:中介級別)。這意味着上面的圖層。

但我認爲它違反了消息框架的分層架構。您應該在Message Builder本身捕獲異常並引發一個Axis Fault,以便底層的突觸傳輸層(在本例中爲Axis2)將處理該錯誤。如果我們看一下TCP協議棧是一種常用的做法(這將故障發送到客戶端。)

如果你真的想在調停階層過濾此錯誤。在Message Builder中捕獲錯誤並添加消息上下文屬性或自定義消息,並將其作爲成功消息傳遞。並在調解層面進行過濾並處理。

但這又是醜陋的。 :)

--Charith

+0

不錯的解決方法,但其他人怎麼處理交通層的錯誤呢?我使用標準的MessageBuilder,並沒有真正考慮改變它們的來源,只是爲了傳播異常到我的突觸代理。 向客戶端發送故障通常不太可能(比如VFS/FTP問題,TCP/IP HL7問題等)。在這些情況下,我真的必須向支持團隊發送一個警報,可能是FTP不再工作...但我該怎麼做? – FiveO