我的設置:抓EJBTransactionRolledbackException之前被記錄到文件
我有一個EJB豆(部署在耳朵上一個JBoss 6.4)與計算數據庫中的一些值,並將其存儲的方法。該方法在新事務中啓動。它看起來像這樣:
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public void doStuff() {
MyObject value = calculateSomeValues();
entityManager.merge(value);
entitiyManager.flush();
}
在設計上,它有可能刷新失敗因ConstraintViolationException
。由於這是一項新的交易,因此該例外將被包裹在EJBTransactionRolledbackException
中,並作爲RuntimeException
拋出。我已經爲ejb異常設置了日誌記錄,因爲在整個系統中找到它們非常有用。然而,據我所知,ConstraintViolationException會不時發生,我想趕上它,並在日誌記錄系統將其記錄爲錯誤之前回滾(違反約束條件不會被視爲異常,但它需要從數據庫的角度視圖)。此刻,我的日誌文件被堵塞的條目像這樣的:
ERROR [org.jboss.as.ejb3.invocation] (default-threads - 49) JBAS014134: EJB Invocation failed on component
我如何能趕上該記錄器從印刷這些錯誤防止這樣的例外? (注意:我仍然希望它記錄所有其他EJBTransactionRolledbackException
s)
超級!這工作!最終我創建了自己的'UserTransaction',這樣我就可以自己處理特定的案例,但這只是您描述的另一種方式。 – Pphoenix