Hi James,
methodA() contains code which should be run in a transaction, but nowhere in the method is a transaction created or started.
methodB() creates and starts a UserTransaction, then calls methodA(). If methodA() completes successfully then the transaction is committed, otherwise the transaction is rolled back.
It works as you expected: methodA executes within the transaction started by methodB. However if methodA would have started a new transaction, then because J2EE doesn�t support nested transactions, your first scenario will become valid: the transaction will get suspended and methodA will run within a new transaction. The initial transaction will resume after the second one will end.
Regards.