1
我有一個使用CMT的EJB。這個EJB是一個JSON JERSEY REST Web服務。此Web服務是由獨立的GSON REST客戶端調用的 。
該EJB按照以下順序在單個轉換中調用以下類: 1)執行DB插入操作的DB DAO類。 2)在Active Directory中插入用戶的LDAP客戶端類。Catch EJB回滾異常
當發生任何異常時,EJB/Web服務將引發500內部服務器錯誤 和容器回滾事務。 我想捕獲這個錯誤,轉換爲有意義的消息併發送給消費者作爲我的響應對象的一部分。 如何捕獲此EJB回滾異常?我發現如果我在EJB內部捕獲它,事務不會回滾。有沒有攔截EJB回滾異常並攔截它的攔截器?
下面是我的EJB代碼:
@Interceptors(SpringBeanAutowiringInterceptor.class)
@Stateless(name = "RegistrationServiceImpl", mappedName = "EJB-model-RegistrationServiceImpl")
@Path("registration")
public class RegistrationServiceImpl implements IRegistrationService {
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public RegistrationResponse validateMemberRegInfo(RegistrationRequest request){
// CALL DB DAO throws DB exception
// CALL LDAP client throws LDAP exception
}
}