日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

快速提示:消息驱动Bean中的异常处理

發布時間:2023/12/3 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 快速提示:消息驱动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中的异常处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。