提交时的交易错误

时间:2015-08-19 12:09:47

标签: java ejb jta stateful

我正在尝试在Payara41服务器Java EE 7中解决此错误,此示例适用于WildFly-9 Java 7 EE和Glassfish-3.1 Java EE 6(不包含@Transactional@TransactionalManagement)< / p>

@Stateful
@Transactional  //default TxType.REQUIRED
@TransactionManagement(TransactionManagementType.BEAN)
public class ImprovementDaoImpl extends AbstractBaseDaoClass implements ImprovementDao {

    /*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*/
    @PersistenceContext(unitName = "pu", type = PersistenceContextType.EXTENDED)
    private EntityManager em;
    @Resource
    private UserTransaction tx;
...
}

这里有一些堆栈跟踪,执行tx.flush();后的内容:

javax.transaction.TransactionalException: Managed bean with Transactional annotation and TxType of REQUIRED encountered exception during commit javax.transaction.RollbackException: Transaction marked for rollback. (...) Caused by: javax.transaction.RollbackException: Transaction marked for rollback.

到目前为止,我已尝试使用拦截器和@TransactionAttribute,但没有人帮助......

感谢您的任何建议/帮助! :)

1 个答案:

答案 0 :(得分:0)

我知道这很老,但是希望这可以帮助某个人...

问题21363423:Throwing an application exception causes TransactionalException

  

您正在从将调用以下方法的方法中引发异常   在运行时被拦截,并附加了其他逻辑:

transaction management;
exception handling.
     

您的异常不能透明地跳过该逻辑,并且   规范(可能)说将抛出TransactionalException,   包装原始异常...

问题18888572:How do you find out what Exception caused the CDI Transaction Rollback?

显示如何使用CDI拦截器捕获异常。我无法从OP的有限信息中得知他/她的具体问题是什么,但是当我收到此异常时,我必须查看WebLogic服务器日志,并找到该条目告诉我唯一的违规行为。添加一些拦截器...