Transactions 为什么我的Jboss服务器开始处理一切事务?

Transactions 为什么我的Jboss服务器开始处理一切事务?,transactions,jboss7.x,jta,Transactions,Jboss7.x,Jta,我正在努力解决这个问题 我没有得到答案,但巴卢斯表示他不相信我的。。。JSF托管bean是事务性的。。?这不是默认行为。您的JSF支持bean类上都有哪些注释?基本上,您应该将事务方法分离到一个真正的服务类中,然后将其注入JSF管理的bean中 我喜欢这个想法,但问题是我的bean上没有任何与事务相关的注释。我打开com.arjuna.ats.jta的跟踪日志,发现容器打开和关闭事务。到目前为止,这是意料之中的 但它对一切都是这样。是否从服务器请求静态PNG?开始一项交易。通过@Schedule

我正在努力解决这个问题

我没有得到答案,但巴卢斯表示他不相信我的。。。JSF托管bean是事务性的。。?这不是默认行为。您的JSF支持bean类上都有哪些注释?基本上,您应该将事务方法分离到一个真正的服务类中,然后将其注入JSF管理的bean中

我喜欢这个想法,但问题是我的bean上没有任何与事务相关的注释。我打开com.arjuna.ats.jta的跟踪日志,发现容器打开和关闭事务。到目前为止,这是意料之中的

但它对一切都是这样。是否从服务器请求静态PNG?开始一项交易。通过@Schedule运行方法?开始一项交易。不涉及实体管理器、数据库或任何事务

这是预期的行为吗

我甚至在没有数据库的服务器上部署了一个新的测试项目,甚至Arjuna在那里为每个调用开始事务

当我创建的任何和所有bean都已连接了活动事务时,我应该如何将我的db方法分离成一个真正的服务bean

这是预期的行为吗

不,至少在JavaEE、JSF和EJB方面没有。就是这样

但是这个项目和我用来尝试三角化问题的新测试项目的足够多的pom文件是EE6和Seam 3的杂种。及

Seam事务有一个内置的ServletRequestListener,如果事务设置为回滚每个请求的事务,它会自动开始并提交或回滚!这样就不必手动指定事务,或者怀疑事务是否已就位

小费

如果需要禁用此侦听器,则web.xml中名为org.jboss.seam.transaction.disableListener的上下文参数设置为true将禁用该侦听器

因此,在我看来,为了将数据库调用重构为真正的服务bean,我有三个选择:

禁用侦听器 从pom.org.jboss.Seam.transaction中删除Seam事务 升级到EE7/JSF2.2并去掉Seam 编辑:

但这并不是全部。@Schedule方法位于一个用@Singleton注释的类中,使其成为一个EJB,默认情况下,这些方法也是事务性的。用@TransactionAttribute{SUPPORTS}注释该特定类,即如果有事务,则使用事务,如果没有事务,则不要打开新事务