gpt4 book ai didi

java - weblogic.transaction.internal.AppSetRollbackOnlyException : setRollbackOnly called on transaction

转载 作者:行者123 更新时间:2023-12-02 02:31:12 27 4
gpt4 key购买 nike

我有以下情况,我调用 BeanA 的 doSomeTask() 但如果 doSomeTask() 失败,我想将 ErrorInfo 保存到另一个表中并调用 BeanA 的 saveError(ErrorInfo) 。它们都有@TransactionAttribute(REQUIRES_NEW)。

class BeanA {

@TransactionAttribute(REQUIRES_NEW)
public void doSomeTask(){

if(someCondition){
throw new SomeException();
}

// do task
}

@TransactionAttribute(REQUIRES_NEW)
public void saveError(ErrorInfo error) {
// save error info if doSomeTask fails
}
}

class BeanB {

BeanA beanA;

void performTask(){
try{
beanA.doSomeTask();
}catch(Exception e){
ErrorInfo error = getErrorInfo(e)
beanA.saveError(error);
}
}
}

但是当 doSomeTask() 抛出异常时 saveError() 不起作用并抛出异常

Caused by: weblogic.transaction.internal.AppSetRollbackOnlyException: setRollbackOnly called on transaction

我做错了什么以及如何修复此错误?预先感谢您的任何帮助。

最佳答案

抱歉,回复晚了。问题解决了。

实际错误已被隐藏。就我而言,实际错误只是在保留时 ErrorInfo 实例的 JSR 303 验证错误。必须添加

Dweblogic.transaction.allowOverrideSetRollbackReason=true

关于<domain_home>/bin/setDomainEnv.sh找出实际的错误并修复它。感谢这个答案https://stackoverflow.com/a/38584687/1563286

关于java - weblogic.transaction.internal.AppSetRollbackOnlyException : setRollbackOnly called on transaction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47082098/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com