It sounds as if the underlying persistence manager is marking the transaction for rollback. The container will still attempt to commit any transaction it started, and if the rollback fails a system exception will be thrown to the client. If you want to protect against this case you could perform the transactional work in a bean-managed transaction.
[Message sent by forum member 'ksak' (ksak)]
http://forums.java.net/jive/thread.jspa?messageID=353023