Is it an Application exception or a System exception that is being thrown? The
ejb specification explicitly states that the container should not automatically rollback transactions in the event of an Application exception, this must be handled by the Bean Provider (you).
If the above doesn't help then you will need to fill us in with more details, such as which Application Server you are using.