I've implemented a setup that's quite similar to the ddd-cqrs-sample. There's a class for the "run environment" that's responsible for running commands with the corresponding command handlers. Besides this my RE implements the transaction boundary. It's responsible for starting a unit of work and do a commit/rollback after command execution depending on the command's result.
Of course this depends on your use case. If your commands behave much the same, perhaps your calling class can make up the transaction boundary. I think in most cases one should try to establish such a command design in order to have commands that are simple and focussed on one task.