When a CMT bean calls getUserTransaction() method on its context, the CMT bean will receive illegalStateException thrown by the Container.
According to EJB 2.0 spec 18.2.2
If the bean method encounters a RuntimeException or error, it should simply propagate the error from the bean method to the Container (i.e., the bean method does not have to catch the exception).
So the bean propagates the illegalStateException to the Container.
The Container will throw either TransactionRolledBack(Local)Exception or RemoteException/EJBException to the client based on the rule EJB 2.0 spec 18.3 Table 15.
Refer to EJB 2.0 spec 18.4.2 and take a look at some of the system applications received by the client
Hope it'll help
Joyce