Hi,
I think there is some specification on transaction propagation over web services. If this spec is implemented and your legacy web services use it, then you're lucky.
Otherwise, just structure your code like this:
Code:
//tx start
databaseDao.save(obj1);
databaseDao.save(obj2);
databaseDao.save(obj3);
legacyDao.save(obj1);
legacyDao.save(obj2);
legacyDao.save(obj3);
//tx end
By this I mean you should structure your code so that the databaseDao calls occur in the first part of the transaction and the legacyDao calls in the second part of the transaction. Also, if you are using Hibernate or something simmillar be carefull that the hibernateSession.flush() is called in you databaseDao methods. Otherwise, the hibernateSession.flush() would be done automatically at the and of the transaction, after the calls to legacyDao.