Just to make sure, you arent throwing an application exception, are you?
I have some additional information. My test was throwing a NamingException. When I changed this to be an EjbException, the data did not commit to the database.
Does the transaction manager only recognize EJBExceptions?
Yes, EJBException is a Runtime exception whereas NamingException is a checked one.
IF you are throwing a NamingException, call the setRollbackonly() before throwing the exception.