Jason is right

If you want to go see what the spec exactly mentions, you can go to section 17.6.1:
If a stateless session bean instance starts a transaction in a business method, it must commit the transaction before the business method returns. The Container must detect the case in which a transaction was started, but not completed, in the business method, and handle it as follows:
Log this as an application error to alert the system administrator.Roll back the started transaction.Discard the instance of the session bean.Throw the java.rmi.RemoteException to the client if the client is a remote client, or throw the javax.ejb.EJBException if the client is a local client.
If a message-driven bean instance starts a transaction in the onMessage method, it must commit the transaction before the onMessage method returns. The Container must detect the case in which a transaction was started, but not completed, in the onMessage method, and handle it as follows:
Log this as an application error to alert the system administrator.Roll back the started transaction.Discard the instance of the message-driven bean.