bean创建异常_快速提示:消息驱动Bean中的异常处理
bean創建異常
讓我們快速回顧一下關于消息驅動Bean的特殊處理。
MDB的入口點是重寫的onMessage方法。 它不提供引發檢查異常的作用域,因此,如果要處理錯誤情形,則需要從代碼中傳播未檢查異常(java.lang.RuntimeException的子類)。
異常類型
EJB規范定義了兩類異常,并且容器根據明確陳述的語義(同樣,在EJB規范中)將一種與另一種區別。
應用例外
如果您拋出不是java.rmi.RemoteException或其子類的已檢查異常(對于MDB而言是不可能的,但其他EJB可以使用此異常),或者它不是以@ javax.ejb.ApplicationException注釋的RuntimeException(未檢查),則該容器是將其視為應用程序異常。 因此,如果由@ javax.ejb.ApplicationException rollback屬性指定,它將回滾事務,并保留MDB實例以供重用–這是非常重要的注意事項。
@ApplicationException(rollback = true) public class InvalidCustomerIDException extends RuntimeException {public InvalidCustomerIDException(){super();} }系統異常
如果拋出java.rmi.RemoteException (已檢查的異常)或其子類,或者拋出了未使用@ javax.ejb.ApplicationException注釋的RuntimeException(未檢查),則容器會將其視為系統異常。 結果,它執行某些操作,例如事務回滾,并丟棄MDB實例(這很關鍵) 。
public class SystemExceptionExample extends Exception {public SystemExceptionExample(){super();} }重要的是要考慮到MDB實例的丟棄 。 如果發生系統異常,容器將始終丟棄該實例–因此,請確保您出于預期的原因使用這些異常。 如果您使用的是應用程序異常,并且它們是未經檢查的(對于MDB,則必須是它們),請確保使用@ javax.ejb.ApplicationException對其進行注釋–這將確保不丟棄 MDB實例本身。
在高負載下,您可能希望池中有盡可能多的MDB,并且希望避免MDB實例退出服務狀態。 明智的異常處理可以幫助您實現此目標。 就像用@ javax.ejb.ApplicationException注釋異常類并將其余的留給容器一樣簡單:-)
參考資料
EJB(3.2)規范是465頁的PDF,乍一看可能令人生畏,但它仍然是一個很好的資源,而且并不難掌握。 如果您想更詳細地了解異常處理語義,請查閱第9章 ,該主題專門針對該主題。
干杯!
翻譯自: https://www.javacodegeeks.com/2015/06/quick-tip-exception-handling-in-message-driven-beans.html
bean創建異常
總結
以上是生活随笔為你收集整理的bean创建异常_快速提示:消息驱动Bean中的异常处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎样用linux如何分区(怎么在linu
- 下一篇: 2000元安卓机推荐(2000左右的安卓