You should
really test this under heavy load, with lots of concurrent users, and killing the client apps at random intervals to make sure that your code really works, and that all transactions that should be committed or rolled back
together are performed correctly.
Michael