We have measured the performance of transactional remote invocations over three commonly used transports: IIOP, SOAP/HTTP, and JBoss Remoting. In the IIOP case, our transactional invocations followed the CORBA OTS standard. In the SOAP/HTTP case, they followed the WSCoordination and WS-AtomicTransaction standards. In the (non-standard) JBoss Remoting transport, they employed a transactional layer modeled after CORBA OTS. For each of those three transports, we evaluate the overhead of propagating the transactional context, the cost of creating and committing empty transactions, and the total overhead incurred when the two-phase commit protocol actually runs. We also evaluate the impact of the transaction log on the total overhead.