In a light-weight transactional system architecture, each component providing a service performs its own scheduling and transaction management. An invocation of one of these services (through remote method invocation) results in the creation of a local transaction (child of the invoking transaction and parent of any transaction that might be triggered by invoking the services of other servers). The information that is required to build a global composite transaction is implicitly added by the system to each call. Each transaction is, however, independently handled at each server. That is, the servers neither communicate among themselves nor rely on a centralized component to make scheduling or recovery decisions. In this way, components can be dynamically added or removed from the system without compromising correctness. Regardless of the configuration, the system according to the invention guarantees that transactions executed over these servers are correct and recoverable at a global and local level.