簡體   English   中英

如何從容器管理的事務提交中捕獲異常?

[英]How do i catch exceptions from container managed transaction commit?

我有一個帶有@WebService接口的@Stateless EJB,使用容器管理的事務,這意味着如果沒有引發系統異常,則在調用方法后,容器會自動提交事務。

如果我嘗試將EntityManager.persist(...)兩個具有相同值的對象用於具有唯一約束的列,則容器將在我的代碼之外的提交時向客戶端拋出PersistenceException 我如何捕獲此異常,以便我可以重新拋出自己的應用程序異常?

我是否必須在我的方法中手動提交事務以捕獲提交中的異常? (並且EntityManager.flush()是正確的方法嗎?)如果是這樣,那么容器管理事務的重點是什么?

遺憾的是,不可能從容器管理的事務失敗中捕獲異常。 如您所述,您最好的選擇是使用bean管理的事務。 或者,您可以使用實現相同接口的代理bean來包裝EM EJB。 當您的代碼不需要響應特定的提交失敗時,容器管理的事務是適當的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM