Я понимаю, что это 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