2014-02-21 153 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) 
相關問題