The JMS tranaction is suspended before it invokes
your BMT MDB.
If that is the case then how do I cause the container to rollback in an exception situation? I can obviously rollback anything I do inside the onMessage but I will be unable to force JBoss to retry the message.
That would be interesting for me too. How can the suspended Container transaction (that dequeued the message) be hinted NOT to acknowledge the receipt so that it will be resend?
In 15.4.13 the EJB spec 2.1 says expressly: "If a message-driven bean uses bean-managed transaction demarcation and throws a RuntimeException, the Container should not acknowledge the message."
Something for the todo list for J2EE compliance? :-)