I tried to throw an exception from a SessionBean to a remote client, I should have gotten my exception, note a remote or EJBException that destroys the bean and got the following instead, from the spec I believe that this behavior is incorrect:

Finally, the bad thing about this behaviour is that if you use a stateful session bean it destroys the EJBObject reference and thus the workflow of the transaction on the bean.

This behaviour precludes the use of business exceptions to communicate business rule errors to the client that are being broken without destroying the transaction. RMI is supposed to be as transparent as possible, this breaks the rules.