@Транзакционный откат для не работает на jboss wildfly

#java #spring-boot #jpa #transactions #rollback

#java #весенняя загрузка #jpa #транзакции #Откат

Вопрос:

У меня есть метод, аннотированный с помощью @Transactional(откат для = CustomerRollBackException.class ) и он работает так, как ожидалось, когда я тестирую его в embebed tomcat. Тем не менее, я развернул его на jboss wildfly, и тот же метод не выполняет откат при возникновении исключения.. Есть ли у вас какие-либо идеи, нужна ли какая-либо конфигурация на jboss?

     @Override
    @Transactional(rollbackFor = CustomerRollBackException.class)
    public void importGenericTable(SheetDTO sheetDTO) throws Exception {
        // String tableName, List<Object> rows, UserDTO user
        Iterator iterator;

        String tableName = sheetDTO.getTableName();
....
try{
..
} catch (ParseException | PersistenceException | SQLGrammarException | ConstraintViolationException e) {
            logger.error("importGenericTable. Error "   e);
            throw new CustomerRollBackException("E_NPRO_UTIL_IMPORT_0001:"   (countRows   2));
        } catch (CustomerNotFoundException e) {
            throw new CustomerRollBackException(e.getMessage());
        } catch (Exception e) {
            throw new CustomerRollBackException("error desconocido");
        }
..
  

Он вводится в первый catch и вызывает исключение CustomerRollBackException, и откат не выполняется.

Ответ №1:

Я думаю, что с jboss вы должны использовать rollbackOn вместо этого

Комментарии:

1. Откат на

2. Используете ли вы @javax.transaction. Транзакционный

Ответ №2:

Решение: настройте источник данных на jboss и используйте его в приложении, используя spring.datasource.jndi-name=java:/XXXX вместо :

 spring.datasource.url= jdbc:
spring.datasource.username=
spring.datasource.password=