javax.persistence.TransactionRequiredException的可能原因

javax.persistence.TransactionRequiredException的可能原因,java,jboss,Java,Jboss,TransactionRequiredException的可能原因是什么 javax.ejb.EJBTransactionRolledbackException: JBAS011469: Transaction is required to perform this operation (either use a transaction or extended persistence context) 我们有一个设置,在这个设置中,我们通过JNDI接口从一个普通的JVM向一个应用程序容器(JB

TransactionRequiredException的可能原因是什么

javax.ejb.EJBTransactionRolledbackException: JBAS011469:
Transaction is required to perform this operation
(either use a transaction or extended persistence context)
我们有一个设置,在这个设置中,我们通过JNDI接口从一个普通的JVM向一个应用程序容器(JBoss7)运行测试。我们有一个每晚运行此代码的夜间构建,它通常会成功。然而,有时,在执行一段时间后,所有测试都开始失败,出现上述异常,并且没有任何代码更改。任何外部问题都可能导致这种情况。我们有磁盘空间,由于异常通过网络传递,我认为网络也很好。以下任一情况是否会导致类似的异常:

  • 缺少文件描述符
  • Hibernate在与数据库(mysql)对话时遇到问题
  • CPU负载
  • 内存不足

对不起,如果这个问题有点抽象,但我无法理解这个问题。欢迎提供所有解决方案和调试建议

我在jboss提供的server.log中找到了答案。日志显示,当测试开始失败时,此类:

org.hornetq.core.client
投掷

Throwable: java.lang.OutOfMemoryError: unable to create new native thread
所以OutOfMemory错误可能会导致

javax.ejb.EJBTransactionRolledbackException: JBAS011469:
Transaction is required to perform this operation
(either use a transaction or extended persistence context)

交易不仅仅是随机消失。我会怀疑是数据库的连接造成了某种程度的问题,尽管我会预料到另一种错误(更确切地说是连接失败)。你没有得到一个例外的事实让我很困惑。你能提供更多关于测试的信息吗。从客户端到服务器有很多客户端事务吗?服务器是否在数据库中插入/修改记录?SFSB,SLSB?目前,我还把钱押在数据库连接上,因为这是一个“随机的”(也称为“一段时间后的问题”),我会关注实体管理器,可能会在每次请求后尝试刷新和重置,看看您是否能够更早地引发问题。所有会话bean都是无状态的。是的,我们做很多交易。我们有大约500个测试,其中大多数是运行许多事务的。感谢您的建议,我将进一步研究数据库。您的一个EJB方法可能具有必需的事务属性。如果您的代码在没有活动事务的情况下调用此方法,则会导致此错误TransactionRequiredException。在某些情况下,你似乎有一个活跃的交易,而不是在某些特殊情况下。需要寻找这个具有强制属性和调试的特定方法,以便更好地理解。