2 Replies Latest reply on Sep 20, 2004 1:14 PM by dimitris

    Transactional MBeans

    ivelin.ivanov


      > -----Original Message-----
      > From: Adrian Brock
      > Sent: Monday, September 20, 2004 6:33 AM
      > To: Dimitris Andreadis
      > Cc: Ivelin Ivanov; Scott M Stark; Sacha Labourey
      > Subject: RE: XMBean
      >
      > I'm ok with discussing it, but if you expect ACID behaviour
      > you need to make each JBoss Server into an XAResource and do
      > two phase commit on the deployment operations.
      >
      > On Wed, 2004-09-15 at 11:11, Dimitris Andreadis wrote:
      > > This is a very long discussion, for reasons like what you consider
      > > part of a transaction, which tx semantics you want to have
      > (rollback
      > > or recover as well) and how the Mbeans model the underlying
      > resources.
      > > In general, you can't have "real" ACID transactions,
      > because there is
      > > usually no way to achieve Isolation, but you can get close to that.
      > >
      > > When it comes to the telco service
      > provisioning/configuration area (or
      > > infact any BPM scenario), I've solved this problem before using a
      > > single JCA adapter holding tx state and undelying Mbeans that
      > > understand particular technologies (e.g. setting routes on
      > switch X,
      > > providing webspace for a user, ...). The mbeans had to implement a
      > > particular contract, so as to participate in the tx and provide
      > > metadata for the creation of productivety tools on top.
      > >
      > > This is particularly important if you design workflows
      > (OakGroave? :)
      > > where integrating with external tx-capable resources
      > relieves you from
      > > the burden of "coding" rollback scenarios in your flows,
      > which can be
      > > a hell.
      > >
      > > So you could design in your flow (or simply call from your
      > EJBs if you
      > > hand-code):
      > >
      > > Begin
      > > do-something-on-external-resource-A
      > > do-something-on-external-resource-B
      > > do-something-on-external-resource-C
      > > sendJMSMessage
      > > updateDB
      > > do-something-on-external-resource-D
      > > Commit or Rollback
      > >