Как поймать org.jboss.weld.context.ContextNotActiveException - PullRequest
0 голосов
/ 31 мая 2018

Я понимаю, что это RuntimeException, но для моего сценария использования мне нужно отловить его и установить некоторые атрибуты.

Контекст: я использую JPA EntityListeners для аудита, и все работает нормально, когда пользователь обращается к приложению.Проблема возникает при удаленном доступе к приложению с помощью RemoteEJB.Я использую объект сеанса (Credentials, который захватывает пользователя) в EntityListener, поэтому, когда вызов сделан из RemoteEJB и из-за отсутствия сеанса он завершается неудачно, как и ожидалось.Это единственное исключение, которое я ожидаю, поэтому я хочу поймать его и жестко закодировать аудит в этом случае доступа к RemoteEJB.Но почему-то я не могу это поймать.Я пытался перехватить javax.enterprise.context.ContextNotActiveException, но безрезультатно.

public class CreateListener {
    @Inject @Named("credentials") private Credentials credentials;
    @PrePersist
    public void setCreateAttributes(Auditable entity){
        try {
            entity.setCreateUserName(credentials.getUserName());
        } catch (RuntimeException e) {
            entity.setCreateUserName("RemoteEJB");
        }
        entity.setCreateTmstmp(new Date());
    }
}

Среда: JDK 1.8, JBOSS EAP 7.1, hibernate-jpa-2.1-api, Hibernate 5.2.12.Final

Любая помощь альтернативного подхода приветствуется.TIA -Avi

...