The following may be bugs in jboss ejb3 (both preview 3 and 4):
1. remote session beans throw RuntimeException to client, rather than rollback tx.
2. local session beans throw javax.transaction.TransactionRollbackException upon encountering application exceptions, rather than throw the appexception back to client.
3. local session beans throw javax.transaction.TransactionRolledbackException upon encountering RuntimeException, rather than javax.ejb.TransactionRolledbackLocalException.
Since TransactionRolledbackException is a checked exception, so the server complains " ERROR: java.lang.reflect.UndeclaredThrowableException"
in 2 and 3.