EJB Перехватчик.Поймать исключение, если транзакция не зафиксирована - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть перехватчик EJB, который должен перехватить и обработать все исключение, которое было сгенерировано в транзакции:

public class ExceptionsInterceptor {

@AroundInvoke
public Object intercept(final InvocationContext invocationContext) throws Exception {
    try {
        return invocationContext.proceed();
    } catch (Exception e) {
        throw new MyException(e);

    }
   }
}

Но если во время сброса hibernate PesistenceException из-за нарушения ограничения, я не могу поймать это исключение,Я понял, что hibernate действительно сбрасывается после окончания работы моего Interceptor.Но мне нужно перехватить все исключения.

Чтобы реализовать это, я украсил этот EJB другим EJB.

@Stateless
@TransactionAttribute(TransactionAttributeType.REQUIRED_NEW)
public class TargetServiceBean implements TargetServiceLocal {

    @Override
    public boolean method1(Integer digit) {
        .. some code which my generate exception..
    }
}

@Stateless
@Interceptors(ExceptionsInterceptor.class)
public class TargetServiceBean implements TargetServiceDecorator {

    @Inject
    private TargetServiceLocal service;
    @Override
    public boolean method1(Integer digit) {
        service.method1(digit);
    }
}

Это работает, но выглядит как обходной путь, и мне не нравится это решение.Так что в основном мне нужно запустить перехватчик из транзакции.Как я могу это сделать?

...