No because if you use container managed transaction the contract with the Spec is
- success or BusinessException without rollback annotation -> all resorces are committed
- fail, RuntimeException or B.Exception with rollback annotation -> all resources are rolled back
So the behavior is correct.
You might use BeanManagedTx or you mark your CMT Beans accordingly.
E.g. Main SLSB without transaction call different SLSB's to charge and perform action 'that cost money'
This will work in all JEE conform servers in the same way.
Also I suppose that the AS5 and AS6 might also different in that case.