【问题标题】:@Transactional rollbackFor not working on jboss wildfly@Transactional rollbackFor 不在 jboss wildfly 上工作
【发布时间】:2021-02-02 10:46:08
【问题描述】:

我有一个用 @Transactional(rollbackFor = CustomerRollBackException.class) 注释的方法,当我在嵌入 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");
        }
..

它进入第一个捕获并抛出 CustomerRollBackException 并且回滚没有执行。

【问题讨论】:

    标签: java spring-boot jpa transactions rollback


    【解决方案1】:

    我认为对于 jboss 你应该使用 rollbackOn

    【讨论】:

    • 没有回滚
    • 你使用@javax.transaction.Transactional
    【解决方案2】:

    解决方案: 在 jboss 上配置数据源并在应用程序中使用它 spring.datasource.jndi-name=java:/XXXX 而不是:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-05
      • 1970-01-01
      • 2020-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-30
      相关资源
      最近更新 更多