I'm unsure that the container should throw an TransactionRollbackException. This depends on the Container.
Section 18.3.3 of EJB 2.0 spec says: "If the exception or error happened during the processing of a client invoked method, throw the
java.rmi.RemoteException to the client if the client is a remote client or throw the javax.ejb.EJBException to the client if the client is a local client. If the instance executed in the client�s transaction, the Container
should throw the javax.transaction.TransactionRolledbackException to a remote client or the
javax.ejb.TransactionRolledbackLocalException to a local client, because it
provides more information to the client".
Therefore, another option in the question can be something like this:
The Container should throw the javax.transaction.TransactionRolledbackException to a remote client if the instance executed in the client�s transaction.