使用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方法,那么我会在有或没有注释的情况下获得异常(事务存在)
因此,注释似乎确实阻止了新事务的创建,但它似乎并没有暂停已经存在的事务(或者我可能完全错了)。