Atomikos Ex­tremeTrans­ac­tions sup­ports web ser­vice trans­ac­tions and also com­pen­sa­tion-based TCC (Try-Con­firm/Can­cel) so your ap­pli­ca­tion/ser­vice is in con­trol of what roll­back or com­mit means.

Ac­cord­ing to more than one an­a­lyst we spoke to, web ser­vice trans­ac­tions are sup­pos­ed­ly in­com­pat­i­ble with the loose cou­pling de­sired by SOA (Ser­vice Ori­ent­ed Ar­chi­tec­ture), with the fol­low­ing be­ing cit­ed as the main rea­sons (read: prob­lems):

  • Any 'hid­den' in­ter­ac­tions (like out-of-band two-phase com­mit) are mis­tak­en­ly per­ceived as a vi­o­la­tion of the loose cou­pling and con­tract-based SOA de­sign prin­ci­ples.
  • As a re­sult, a com­mon prob­lem is that a trans­ac­tion­al ser­vice calls oth­er ser­vices that are not trans­ac­tion­al - and this go­ing un­no­ticed. This be­comes a prob­lem when the de­sired out­come is roll­back be­cause those non-trans­ac­tion­al ser­vices will com­mit their work right-away.

With Atomikos, these are all non-is­sues for the fol­low­ing rea­sons:

  • Both the sender and re­ceiv­er in a trans­ac­tion­al (web) ser­vice in­ter­ac­tion can spec­i­fy (and en­force) their trans­ac­tion pref­er­ences/as­sump­tions by means of our in­ter­me­di­aries ('han­dlers' in JAX-WS ter­mi­nol­o­gy).
  • For in­stance, if a ser­vice ('A') ex­pects an­oth­er ser­vice ('B') to be trans­ac­tion­al then it suf­fices to add our out­go­ing han­dler to the call chain at A. Thanks to the na­ture of our pro­to­cols, the calls to B will then car­ry the trans­ac­tion con­text of A, and more­over the re­sult­ing SOAP re­turn mes­sage from B will also in­di­cate whether or not it has tak­en part in that trans­ac­tion. If not, then the han­dler at A (in­spect­ing the re­turn mes­sage) will throw an ex­cep­tion to in­di­cate the con­tract breach. So this guar­an­tees the trans­ac­tion con­tract be­ing re­spect­ed from A's point of view.
  • How about B? There the so­lu­tion is sim­i­lar: if B wants in­com­ing calls to be trans­ac­tion­al, it suf­fices to add a han­dler to the in­com­ing call chain at B. This han­dler can be con­fig­ured with sim­i­lar trans­ac­tion de­mar­ca­tion pref­er­ences as in JEE (REQUIRED, REQUIRES_NEW, ...).

So it is re­al­ly sim­ple to en­force a trans­ac­tion­al con­tract among ser­vices in a SOA, thanks to Atomikos. Com­pare this to the pop­u­lar al­ter­na­tive of mod­el­ling roll­back in the ser­vice work­flow (which at least dou­bles the work­flow com­plex­i­ty and makes the whole SOA ini­tia­tive more brit­tle and less ag­ile) and it be­comes clear why we say: use Atomikos and fo­cus on the hap­py path! (TM)

If you would like to try this out in prac­tice, just check out Ex­tremeTrans­ac­tions for your­self.

RSS

Comments

Corporate Information

Atomikos Corporate Headquarters
Hoveniersstraat, 39/1, 2800
Mechelen, Belgium

Contact Us

Copyright 2026 Atomikos BVBA | Our Privacy Policy
By using this site you agree to our cookies. More info. That's Fine