An apparatus and method for maintaining integrity of data in a software
environment are provided. With the apparatus and method, the individual
software resources associated with a transaction are identified and the
processing of these resources is started. As the processing of these
resources terminates, their associated APIs return messages indicating
either that the software resource committed or was unable to commit and
the reason why the software resource was unable to commit. Based on this
reason, appropriate error resolution and recovery operations are
performed and the transaction is resubmitted only to those software
resources that were unable to commit. The software resources that already
committed have their states maintained. In this way, roll back of
committed software resources is avoided.