You misunderstand. You need a reliable coordinator to record the compensations and trigger
them when necessary. A rollback is a compensation that is triggered, either by the
application or by the recovery subsystem. A forward compensation is just the same: the
information about which compensation to trigger and when, needs to be durably recorded and
replayed when/if necessary. Believe it or not, but failures during compensation do occur.
As far as compensations are concerned, if you're doing forward compensation then they
are often tied to the application or business logic and not generally applicable. Take a
look at the OMG Additional Structuring Mechanisms for the OTS, or the Java Activity
Service specifications for some examples of what I mean (although I'm fairly sure you
understand). Some BPEL engines are implemented on these frameworks. What those frameworks
do is generalise a coordinator (what you've called a transactionmanager) so that it
can do forward or backward recovery.
Although we have an implementation of these frameworks, ArjunaCore isn't it, but is
similar. It allows for the structured relaxation of the ACID properties in
"transaction" coordination as defined by Jim Gray in his original IBM technical
report. (It was actually the basis of some of the work I mentioned above.)
BTW, compensation transactions (including WS-BA) are being used today in some pretty
important and mission critical environments. Compensations aren't new and many
vertical sectors have been using them ad hoc for nearly 20 years. What they've been
doing over the past 5 years is moving to the standards.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4029148#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...