Вот моя проблема.
Я работаю над пакетом синхронизации с использованием 2 модулей EJB / JPA / Hibernate.
Первый модуль считывает информацию в базе данных A и обнаруживает изменения.
После обнаружения измененные элементы отправляются во второй модуль через JMS.
Второй модуль читает сообщение, просматривает измененные элементы и обновляет информацию в базе данных B.
Как только процесс обновления завершен, сообщение, содержащее идентификатор успешно обновленных элементов, отправляется первому модулю, который помечает в базе данных А успешно обновленные элементы.
Весь процесс работает, но я не знаю, как управлять исключениями, которые могут возникнуть во время процесса сохранения, с помощью управляемого контейнером EntityManager .
Если бы я не работал с управляемым контейнером EntityManager, я бы открывал новую транзакцию для каждой вставки и фиксировал ее или откатывал в зависимости от того, возникло ли исключение.
Мне нужно знать, когда произошло исключение, чтобы не добавлять идентификатор элемента, обрабатываемого в данный момент, и вызывающего исключение, в список с идентификатором элементов, успешно обновленных. Кроме того, если я обрабатываю 10 элементов и первый элемент в списке создает исключение, мне нужно продолжить работу с другими 9 элементами.
Я думал, что использование @TransactionAttribute (TransactionAttributeType.REQUIRES_NEW) перед постоянными методами решит мою проблему, но это не помогло.
Есть ли способ сделать то, что мне нужно сделать, используя EntityManager, управляемый контейнером?
Спасибо.