我在EJB3無狀態會話bean中使用CMT。另外我創建了自己的Exception,註釋「@ApplicationException(rollback = true)」。EJB3事務回滾
當我想要回滾事務時,是否必須使用「context.setRollbackOnly()」?
我可以通過在bean中的公共方法內引發異常來回滾事務嗎?
如果是這樣(的答案,Q#2是肯定的),我必須在方法聲明異常拋出異常的方法的還是會足以隨便扔在方法內部異常和處理它在同一個方法裏面呢? (我不想傳播異常到一個新的水平。我只是想回滾除外。)提前
感謝。 ;)
「如果您在代碼中捕獲了已檢查的異常,則必須使用setRollbackOnly來回滾事務。」 你也可以拋出相同的異常並回滾事務嗎? – 2010-03-03 03:36:03
您可以使用throws子句拋出相同的異常,但事務不會回滾。如果您想在這種情況下回滾事務,則必須將@ApplicationException(rollback = true)添加到您的異常中。另一種方法是將檢查的異常封裝在未經檢查的異常(例如RuntimeException)中。但是這種方式並不是首選,因爲如果拋出RuntimeException,容器會放棄bean實例並創建一個新實例。 – Steve 2010-03-03 06:30:05
我只是在類似的原因看這個答案,並希望指出,你鏈接到的書不再在該網站提供完整的,它是從2006年,所以它是非常過時的,可能沒有太多用於JEE5和JEE6上下文。 – BillR 2012-09-08 00:24:44