CMTを使用するEJBがあります。このEJBは、JSON JERSEYRESTWebサービスです。このWebサービスは、スタンドアロンのGSONRESTクライアントによって呼び出されます。
このEJBは、以下の順序で1回の変換で以下のクラスを呼び出します。1)DB挿入操作を実行するDBDAOクラス。2)ActiveDirectoryにユーザーを挿入するLDAPクライアントクラス。
例外が発生すると、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
}
}