У меня была такая же проблема сегодня, и я нашел обходной путь. Проблема, насколько я могу понять, в том, что Ar c (реализация cark в cdi) иногда нужно генерировать классы.
Проверенные исключения (такие как javax.transaction.RollbackExcpetion) должны как-то продвигаться пользователю. Поэтому проверенное исключение оборачивается внутри ArcUndeclaredThrowableException. Это необходимо сделать только в том случае, если вы явно не обрабатываете исключение.
Например, вы можете просто объявить исключение:
@Dependent
public class UserRepository {
@Transactional
public void createUser(User user) throws RollbackException{
getEntityManager().persist(user);
}
}
В вашем ресурсе вы можете перехватить RollbackException
@Override
public Response createUser(@Valid CreateUserDTO createUserDTO, UriInfo uriInfo) {
...
try {
userRepository.createUser(user);
} catch (RollbackException e) {
log.error(e.getMessage());
throw e;
}
return Response.ok().build();
}