An instance of TransactionContext is shared between scopes so using an instance variable to maintain the beans within a particular scope does not work. I have reworked the solution to store the beans on a per transaction basis (in a Synchronization instance)