Java JPA注释@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)未按预期工作

时间:2014-06-23 20:14:26

标签: java

使用Hibernate在JBoss 5.1上运行J2EE应用程序。我需要调用一些使用来自企业bean的显式数据库连接的方法(在quartz调度程序中)。目前,在事务中调用不允许的提交时会出现错误。

我希望在bean方法中添加@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)注释可以让我调用quartz api,但仍然会得到相同的异常。我误解了这个注释意味着什么,或者是其他什么东西在继续?

2014-06-23 17:43:41,184 ERROR [http-0.0.0.0-8443-4] org.quartz.JobPersistenceException: Couldn't commit jdbc connection. You cannot commit during a managed transaction! [See nested exception: java.sql.SQLException: You cannot commit during a managed transaction!]
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.commitConnection(JobStoreSupport.java:3661)
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3799)
    at org.quartz.impl.jdbcjobstore.JobStoreTX.executeInLock(JobStoreTX.java:93)
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeWithoutLock(JobStoreSupport.java:3703)
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.checkExists(JobStoreSupport.java:1897)
    at org.quartz.core.QuartzScheduler.checkExists(QuartzScheduler.java:1491)
    at org.quartz.impl.StdScheduler.checkExists(StdScheduler.java:555)

更多数据:

1)如果我从没有注释的非托管类调用我的托管bean方法,那么我得到相同的异常(创建事务)

2)如果我从带有注释的非托管类调用我的托管bean方法,那么我就不会得到异常(没有创建事务)

3)如果我从另一个托管bean或自己调用我的托管bean方法,那么我会在有或没有注释的情况下获得异常(事务存在)

因此,注释似乎确实阻止了新事务的创建,但它似乎并没有暂停已经存在的事务(或者我可能完全错了)。

0 个答案:

没有答案