1 Reply Latest reply on Jul 19, 2007 4:48 AM by gavin.king

    SeamPhaseListener should check for rolledBack exceptions bef

    matt.drees

      I'm running jboss embedded on tomcat.
      For some reason every once in a while (I haven't figured out the circumstances yet), I get some strange transaction problems.

      SeamPhaseListener (line 560) checks to make sure Transaction.instance() isn't STATUS_ACTIVE or STATUS_MARKED_ROLLBACK, but it doesn't check to make sure it's not STATUS_ROLLEDBACK. When my app has this goofy problem, Transaction.instance() returns such a transaction. When SeamPhaseListener tries to begin() it, I get a TransactionNotSupported exception, and a redirect to the debug page. But the debug page runs the seam phase listener, which again gets a rolledback transaction, and throws another exception. So I get in an infinite loop.

      So...

      1. Does anybody have any idea why Transaction.instance() (under the hood implemented by Naming.getInitialContext().lookup("UserTransaction"); ) would return a rolledback transaction?

      2. Can Seam make sure the transaction isn't rolledback before beginning, and therefore prevent the infinite loop I'm experiencing?