I assume there is no transaction in A, otherwise A'll get an RemoteException calling C.
A calls B. B starts a transaction, say Tx-B, and completes (commit).
A calls C.
A calls D. D starts a transaction, say Tx-D, and rollbacks. This will cause only Tx-D to rollback, not Tx-B.
J2EE does not support nested transactions. If you want Tx-B to rollback as well, then you need to use "Required" in A and change "Never" to "NotSupported" in C.
No warranty on what you just read
