2014-02-21 85 views
1

TransactionRequiredException的可能原因是什么?javax.persistence.TransactionRequiredException的可能原因

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

我们在JNDI接口,我们对应用程序容器运行从一个正常的JVM测试的设置(JBoss的7)。我们有一个每晚都会运行这个代码的夜间构建,它通常会成功。然而,有时在执行一段时间后,所有测试开始失败,出现上述异常而没有任何代码更改。任何外部问题都可以导致这一点我们有磁盘空间,并且由于异常通过网络传递,我认为网络也很好。可以在任何下列原因的例外是这样的:

  • 文件描述符缺乏
  • 休眠有出的内存谈话的数据库(MySQL的)
  • CPU负载
  • 问题

很抱歉,如果问题有点抽象,但我无法理解这个问题。所有解决方案和调试建议都受到欢迎。

+0

的交易不只是随机消失。我会怀疑这是与数据库的连接有点负责任,但我会期待一种不同类型的错误(连接失败,更确切地说)。在这里你不会得到例外的事实让我感到困惑。 – Gimby

+1

你能提供更多关于测试的信息吗?你有很多从客户端到服务器的客户端事务吗?服务器是否插入/修改数据库中的记录? SFSB,SLSB?目前我还会在数据库连接上下注我的钱,因为它是一个“随机”(又名“一段时间后的问题”),我将重点放在实体管理器上,也许尝试在每次请求后刷新和重置,以看看你能否提前解决问题。 –

+0

所有会话bean都是无状态的。是的,我们做了很多交易。我们有大约500个测试,其中大部分都运行了很多交易。我会更多地关注数据库,感谢您的建议。 – toftis

回答

0

我在jboss提供的server.log中找到了我的答案。日志显示,在当测试开始出现故障,这班时间:

org.hornetq.core.client 

抛出

Throwable: java.lang.OutOfMemoryError: unable to create new native thread 

这样一个OutOfMemoryError会导致

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