java 手动事务_java – 如何手动提交托管事务

我得到了一个JAR形式的“API”,可以从我的

Java-Seam-Hibernate应用程序中执行一些外部会计操作.

在内部,API是一个简单的Hibernate应用程序,除了Seam本身使用的数据源外,还使用两个独立的数据源.

问题是,在执行内部.commit()时,其中一个“API”操作会引发以下异常:

java.sql.SQLException: You cannot commit during a managed transaction!

at org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.jdbcCommit(BaseWrapperManagedConnection.java:543)

at org.jboss.resource.adapter.jdbc.WrappedConnection.commit(WrappedConnection.java:334)

at org.hibernate.transaction.JDBCTransaction.commitAndResetAutoCommit(JDBCTransaction.java:139)

at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:115)

at com.other.APIAccountingImpl.moneyMovement(APIAccountingImpl.java:261)

at com.myapp.integration.ExternalApiIntegrator.storeAcountingData(ExternalApiIntegrator.java:125)

at com.myapp.session.EmployeeAccounting.persistData(EmployeeAccounting.java:123)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at ...

Session sess = factory.openSession();

Transaction tx;

try {

tx = sess.beginTransaction();

//do some work

...

tx.commit();

}

catch (Exception e) {

if (tx!=null) tx.rollback();

throw e;

}

finally {

sess.close();

}

我正在使用JAM的Seam托管交易.我也被迫使用自定义API,我不允许改变源代码.

我有什么选择?如何从“API”Hibernate会话中隔离Seam管理的事务?是否可以将特定数据源的连接配置为托管trx?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值